From 32ffabfb0a231acba61b6d790aca8f62ce7f9da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com> Date: Fri, 19 Jul 2024 19:10:45 +0800 Subject: [PATCH] 20240719 --- Khd.Core.Api.sln | 2 +- src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs | 6 +- .../Models/MesBaseMaterialInfo.cs | 4 +- .../Models/WmsInventoryCheck.cs | 4 - .../Models/WmsInventoryCheckDetail.cs | 4 - src/Khd.Core.Plc/StaticPlcHelper.cs | 2 +- src/Khd.Core.Wcs/MainCentralControl.cs | 27 +- src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 69 ++-- src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 121 ++++--- src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 195 ++++++----- src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 1 + src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs | 2 +- src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 218 +++++++------ src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs | 166 ++++++---- src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 176 +++++----- src/Khd.Core.Wcs/Wcs/SystemTimer.cs | 10 +- src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs | 307 ++++++++++++------ src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs | 136 ++++---- src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 23 +- .../Inventory/InventoryTaskEditForm.xaml.cs | 56 ++-- .../Inventory/InventoryTaskForm.xaml.cs | 12 - .../TaskForm/SelectOutRawForm.xaml | 3 +- .../TaskForm/SelectOutRawForm.xaml.cs | 50 ++- 23 files changed, 883 insertions(+), 711 deletions(-) diff --git a/Khd.Core.Api.sln b/Khd.Core.Api.sln index 2c1d84d..c890fe4 100644 --- a/Khd.Core.Api.sln +++ b/Khd.Core.Api.sln @@ -23,7 +23,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Khd.Core.Thrift.Client", "s EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Khd.Core.Thrift.Server", "src\Khd.Core.Thrift.Server\Khd.Core.Thrift.Server.csproj", "{23371C02-98D7-4B01-80D6-542F6494D920}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Khd.Core.Wpf", "src\Khd.Core.Wpf\Khd.Core.Wpf.csproj", "{E28EBEAC-E51B-4905-97AD-0CE756E3E1EF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Khd.Core.Wpf", "src\Khd.Core.Wpf\Khd.Core.Wpf.csproj", "{E28EBEAC-E51B-4905-97AD-0CE756E3E1EF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs b/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs index e45811f..59d2e84 100644 --- a/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs +++ b/src/Khd.Core.Domain/Dto/agv/WcsAgvStatus.cs @@ -1,11 +1,7 @@ using Newtonsoft.Json; using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Khd.Core.Domain.Dto.agv { @@ -25,7 +21,7 @@ namespace Khd.Core.Domain.Dto.agv { get { - if (path != null&&path.Length>0) + if (path != null && path.Length > 0) { string json = JsonConvert.SerializeObject(path); return json; diff --git a/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs b/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs index 327abb7..2137cb9 100644 --- a/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs +++ b/src/Khd.Core.Domain/Models/MesBaseMaterialInfo.cs @@ -40,8 +40,8 @@ namespace Khd.Core.Domain.Models public decimal? NetWeight { get; set; } [Column("gross_weight")] public decimal? GrossWeight { get; set; } - [Column("bind_flag")] - public string BindFlag { get; set; } + //[Column("bind_flag")] + //public string BindFlag { get; set; } [Column("factory_id")] public string FactoryId { get; set; } [Column("create_org_id")] diff --git a/src/Khd.Core.Domain/Models/WmsInventoryCheck.cs b/src/Khd.Core.Domain/Models/WmsInventoryCheck.cs index cfade07..4558961 100644 --- a/src/Khd.Core.Domain/Models/WmsInventoryCheck.cs +++ b/src/Khd.Core.Domain/Models/WmsInventoryCheck.cs @@ -1,10 +1,6 @@ using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Khd.Core.Domain.Models { diff --git a/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs b/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs index 93a3e0f..48cb6b1 100644 --- a/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs +++ b/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs @@ -1,10 +1,6 @@ using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Khd.Core.Domain.Models { diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs index c521eb7..d0a1772 100644 --- a/src/Khd.Core.Plc/StaticPlcHelper.cs +++ b/src/Khd.Core.Plc/StaticPlcHelper.cs @@ -45,7 +45,7 @@ namespace Khd.Core.Plc { return null; } - return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Trim(); + return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Replace("\\u", "").Trim(); } diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 78de1a1..d3f5c13 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -1,7 +1,6 @@ using Khd.Core.EntityFramework; using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Wcs; -using Masuit.Tools; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -58,7 +57,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 @@ -70,26 +69,26 @@ 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(); //SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value); //secondFloorPoint.StartPoint(); - ////二层AGV + //二层AGV //var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); //SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value); //secondFloorAGV.StartPoint(); ////二楼线体 - //var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 3).First(); + //var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 17).First(); //SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[0], SecondFloorLineEquip.floorNo.Value); //secondFloorLine.StartPoint(); @@ -98,10 +97,10 @@ namespace Khd.Core.Wcs //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(); + ////三层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(); diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 3ef932d..1e1eb90 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -29,30 +29,31 @@ namespace Khd.Core.Wcs.Wcs /// public void StartPoint() { + ////背负式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 createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic); - createThirdOutTaskThread.Start(); - + ////三楼去翻转机任务 + //var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic); + //createThirdOutTaskThread.Start(); + //二楼成品出库任务 var CreateSecondProductTaskThread = new Thread(CreateSecondProductTaskLogic); CreateSecondProductTaskThread.Start(); - - var createEmptyTrayThread = new Thread(CreateEmptyTrayLogic); - createEmptyTrayThread.Start(); - + ////三楼托盘收集架满5个或10个时出库合盘任务 + //var createEmptyTrayThread = new Thread(CreateEmptyTrayLogic); + //createEmptyTrayThread.Start(); + ////二楼废品区人工调度任务 //var createThirdWasterTaskThread = new Thread(CreateThirdWasterTaskLogic); //createThirdWasterTaskThread.Start(); @@ -141,7 +142,7 @@ namespace Khd.Core.Wcs.Wcs bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 9).Any(); if (!hasTask) { - WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 9).OrderBy(t => t.createBy).FirstOrDefault(); + WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 9 || t.nextPointId == 8).OrderBy(t => t.createBy).FirstOrDefault(); if (wcsTaskManual != null) { WcsTask wcsTask = CoreMapper.Map(wcsTaskManual); @@ -481,7 +482,6 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationScrapType == "1") .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") - .Where(t => t.ContainerStatus == "1") .Where(t => t.warehouseId == 311).ToList(); var bill = from a in wmsBaseLocations from b in wmsRawStocks @@ -511,7 +511,7 @@ namespace Khd.Core.Wcs.Wcs { if (lastbill.b.instockDate != null && fistbill.b.instockDate != null) { - + if (wmsBaseLocation.locDeep == 1) { int? row = 0; @@ -669,10 +669,12 @@ namespace Khd.Core.Wcs.Wcs dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); var wmsRawReturn = dbContext.WmsRawReturn .Where(t => t.auditStatus == "1") + .Where(t => t.executeStatus == "0") .FirstOrDefault(); if (wmsRawReturn != null) { - if (wmsRawReturn.executeStatus == "0") + bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == baseEquip.objid).Any(); + if (!hasTask) { //任务未开始Status=0 BaseEquip? startEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawReturn.endStationCode); @@ -765,6 +767,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationScrapType == "1") .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") + .Where(t => t.locationStatus == "1") .Where(t => t.warehouseId == item.warehouseId) .Where(t => wmsproStocks.Contains(t.locationCode)) .ToList(); @@ -966,7 +969,7 @@ namespace Khd.Core.Wcs.Wcs { var proStock = dbContext.WmsProductStock .Where(t => t.warehouseId == 231) - .Where(t => t.activeFlag == "0") + .Where(t => t.activeFlag == "1") .Where(t => t.totalAmount > t.frozenAmount) .ToList(); var proOutStock = dbContext.WmsProductOutstock @@ -981,7 +984,7 @@ namespace Khd.Core.Wcs.Wcs BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 2 && t.equipType == 1); var wmsproStocks = proStock - .Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId) + .Where(t => t.productId == item.productId && t.saleOrderId == item.saleOrderId && t.warehouseId == item.warehouseId) .Select(t => t.palletInfoCode) .ToList(); @@ -990,6 +993,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.delFlag == "0") .Where(t => t.locationScrapType == "1") .Where(t => t.instockFlag == "0") + .Where(t => t.locationStatus == "1") .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == item.warehouseId) .Where(t => wmsproStocks.Contains(t.containerCode)) @@ -1010,7 +1014,7 @@ namespace Khd.Core.Wcs.Wcs select new { a, b }; BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8); - BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2); + BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 1); foreach (var b in bill) { item.executeStatus = "1"; @@ -1067,6 +1071,12 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId) .Where(t => t.locDeep == 1) + .Where(t => t.activeFlag == "1") + .Where(t => t.delFlag == "0") + .Where(t => t.locationScrapType == "1") + .Where(t => t.instockFlag == "0") + .Where(t => t.locationStatus == "1") + .Where(t => t.outstockFlag == "0") .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId) .Where(t => t.warehouseId != location.locationId) @@ -1078,7 +1088,7 @@ namespace Khd.Core.Wcs.Wcs { objid = StaticData.SnowId.NextId(), orderId = item.productOutstockId, - taskType = 38, + taskType = 55, containerNo = wmsBaseLocation.containerCode, createBy = "WCS", createTime = DateTime.Now.AddSeconds(-10), @@ -1118,7 +1128,7 @@ namespace Khd.Core.Wcs.Wcs { objid = StaticData.SnowId.NextId(), orderId = item.productOutstockId, - taskType = 38, + taskType = 50, containerNo = location.containerCode, createBy = "WCS", createTime = DateTime.Now, @@ -1219,6 +1229,7 @@ namespace Khd.Core.Wcs.Wcs { lock (SystemData.outStockLock) { + #region CTU出库,没用背负Agv的逻辑 //if (endEquip.equipType == 8)//CTU出库 //{ // var wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First(); @@ -1351,10 +1362,11 @@ namespace Khd.Core.Wcs.Wcs // dbContext.SaveChanges(); // } //}//CTU出库 + #endregion if (endEquip.equipType == 10)//CTU出库到装配区 { BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10); - if (!string.IsNullOrEmpty(endStationCodeEquip.remark)) + if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode)) { bool CreateSuccess = false; var wcsOutstockLock = dbContext.WcsOutstockLock @@ -1391,6 +1403,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationScrapType == "1") .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") + .Where(t => t.locationStatus == "1") .Where(t => t.warehouseId == 512) .Where(t => wmsRawStocks.Contains(t.containerCode)) .ToList(); @@ -1658,11 +1671,16 @@ namespace Khd.Core.Wcs.Wcs item.beginTime = DateTime.Now; } dbContext.UpdateRange(orderList); - dbContext.AddRange(tasks); dbContext.Update(item); - dbContext.Update(wcsOutstockLock); - dbContext.SaveChanges(); } + endStationCodeEquip.endStationCode = null; + dbContext.Update(endStationCodeEquip); + if (tasks.Count > 0) + { + dbContext.AddRange(tasks); + dbContext.Update(wcsOutstockLock); + } + dbContext.SaveChanges(); } } } @@ -1687,6 +1705,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationScrapType == "1") .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") + .Where(t => t.locationStatus == "1") .Where(t => t.warehouseId == item.warehouseId) .Where(t => wmsRawStocks.Contains(t.containerCode)) .ToList(); diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index d9d3a71..158070c 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -89,11 +89,11 @@ namespace Khd.Core.Wcs.Wcs /// public void StartPoint() { - Thread firstFloorLine = new(FirstFloorLine) - { - IsBackground = true - }; - firstFloorLine.Start(); + //Thread firstFloorLine = new(FirstFloorLine) + //{ + // IsBackground = true + //}; + //firstFloorLine.Start(); Console.WriteLine(DateTime.Now + ":一楼接驳位线程启动成功"); LogManager.Info("一楼接驳位线程启动成功"); @@ -103,11 +103,11 @@ namespace Khd.Core.Wcs.Wcs }; firstFloorHoister.Start(); - Thread CallEmptyThread = new Thread(CallEmpty) - { - IsBackground = true - }; - CallEmptyThread.Start(); + //Thread CallEmptyThread = new Thread(CallEmpty) + //{ + // IsBackground = true + //}; + //CallEmptyThread.Start(); Console.WriteLine(DateTime.Now + ":一楼提升机线程启动成功"); LogManager.Info("一楼提升机线程启动成功"); @@ -168,16 +168,16 @@ namespace Khd.Core.Wcs.Wcs } } - private bool ReadEmptyLocation() + public static bool ReadEmptyLocation() { var oneOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut"); var someOutPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut"); var oneInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneIn"); var someInPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someIn"); - var oneOutValue = this._plc.Read(oneOutPoint.plcpointAddress); - var someOutValue = this._plc.Read(someOutPoint.plcpointAddress); - var oneInValue = this._plc.Read(oneInPoint.plcpointAddress); - var someInValue = this._plc.Read(someInPoint.plcpointAddress); + var oneOutValue = StaticData.PlcDic[0].Read(oneOutPoint.plcpointAddress); + var someOutValue = StaticData.PlcDic[0].Read(someOutPoint.plcpointAddress); + var oneInValue = StaticData.PlcDic[0].Read(oneInPoint.plcpointAddress); + var someInValue = StaticData.PlcDic[0].Read(someInPoint.plcpointAddress); if (oneOutValue != null && someOutValue != null && oneInValue != null && someInValue != null) { if (Convert.ToInt32(oneOutValue) == 0 && Convert.ToInt32(someOutValue) == 0 && Convert.ToInt32(oneInValue) == 0 && Convert.ToInt32(someInValue) == 0) @@ -212,7 +212,7 @@ namespace Khd.Core.Wcs.Wcs { //判断task表里没有该rfid的未完成的入库 //信息,未下发去向 - var task = dbContext.WcsTask.Where(t => t.containerNo == RFID001Value && t.taskStatus < 1).FirstOrDefault(); + var task = dbContext.WcsTask.Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault(); if (task == null) { //根据托盘号获取物料码 @@ -293,42 +293,21 @@ namespace Khd.Core.Wcs.Wcs } } } - else if (string.IsNullOrEmpty(task.containerNo))//按照正常任务下发 + else { - if (task.nextPointId != T01) + if (string.IsNullOrEmpty(task.containerNo)) { - task.containerNo = RFID001Value; - task.currPointId = F01; - task.currPointNo = "TSJ_01"; - task.nextPointId = T01; - task.nextPointNo = "TSJ_01"; - task.taskStatus = 0; - if (task.createBy == "wpf") + if (task.qty > 1)//多个托盘 { - task.useFlag = 0; + if (task.useFlag == 1) + { + + } + } + else if (task.qty == 1) + { + } - task.updateBy = "一楼接驳位线程"; - task.updateTime = DateTime.Now; - task.remark = "一楼创建入库任务"; - WcsTaskLog wcsTaskLog = CoreMapper.Map(task); - dbContext.Update(wcsTaskLog); - dbContext.Update(task); - dbContext.SaveChanges(); - } - } - //出库 - else if (Outtpyes.Contains(task.taskType)) - { - MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == task.containerNo); - if (mesBasePalletInfo != null) - { - dbContext.WcsTask.Where(t => t.objid == task.objid).Delete(); - dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 4, materialBarcode = mesBasePalletInfo.materialBarcode }); - } - else - { - dbContext.WcsTask.Where(t => t.objid == task.objid).Delete(); - dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 4 }); } } } @@ -383,6 +362,7 @@ namespace Khd.Core.Wcs.Wcs var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList(); foreach (var wcsTask in wcsTasks) { + wcsTask.serialNo ??= SystemData.GetSerialNo(dbContext); if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any()) { LogManager.Info("提升机线程:有其他任务正在执行,跳过当前任务"); @@ -469,29 +449,47 @@ namespace Khd.Core.Wcs.Wcs if (wcsTask.floorNo == 1) { if (ReadEmptyLocation()) + { + var linesignal = _plc.Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress); + if (linesignal != null && Convert.ToInt32(linesignal) == 0) + { + wcsTask.taskStatus = 4; + wcsTask.updateBy = "提升机线程"; + wcsTask.updateTime = DateTime.Now; + wcsTask.remark = "提升机任务执行完成"; + BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && 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 + { + BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); + this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); + } + } + } + else + { + var linesignal = _plc.Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress); + if (linesignal != null && Convert.ToInt32(linesignal) == 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")); + BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.floorNo && 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 - { - 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 + { + BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); + this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); + } } } else if (wcsTask.taskStatus == 4) @@ -505,7 +503,6 @@ namespace Khd.Core.Wcs.Wcs 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(); diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 6219044..a8f8503 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -67,39 +67,41 @@ namespace Khd.Core.Wcs.Wcs BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType); if (item.taskType == 38)//出库任务 { - BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5); - bool canSend = dbContext.WcsTask.Where(t => t.nextPointId == lineEquip.objid && t.taskStatus > 0).Any(); - if (lineEquip.equipStatus == 1) + BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 5); + if (lineEquip.equipStatus == 0) { - LogManager.Info("五楼AGV:接驳位有任务,无法下发出库任务"); - continue; - } - if (Convert.ToInt32(this._plc.Read(LineSignal.plcpointAddress)) == 1 && !canSend) - { - Console.WriteLine($"{DateTime.Now}:5楼接驳位上有货,无法下发Agv出库任务"); - continue; - } - WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1); - WcsCmd wcsCmd = new() - { - objid = StaticData.SnowId.NextId(), - cmdStatus = 0, - taskId = item.objid, - useFlag = 1, - cmdType = item.taskType, - containerNo = item.containerNo, - createTime = DateTime.Now, - createBy = FloorNo + "楼AGV", - currPointId = item.currPointId, - currPointNo = wmsBaseLocation.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = nextEquip.agvPositionCode, - }; - RequestAGVTaskDto agvTask = new() - { - reqCode = wcsCmd.objid.ToString(), - positionCodePath = new List + bool canSend = dbContext.WcsTask.Where(t => t.nextPointId == lineEquip.objid && t.taskStatus > 0).Any(); + if (lineEquip.equipStatus == 1) + { + LogManager.Info("五楼AGV:接驳位有任务,无法下发出库任务"); + continue; + } + if (Convert.ToInt32(this._plc.Read(LineSignal.plcpointAddress)) == 1 && !canSend) + { + Console.WriteLine($"{DateTime.Now}:5楼接驳位上有货,无法下发Agv出库任务"); + continue; + } + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); + BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 1); + WcsCmd wcsCmd = new() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = item.currPointId, + currPointNo = wmsBaseLocation.agvPositionCode, + nextPointId = item.endPointId, + nextPointNo = nextEquip.agvPositionCode, + }; + RequestAGVTaskDto agvTask = new() + { + reqCode = wcsCmd.objid.ToString(), + positionCodePath = new List { new () { @@ -112,30 +114,31 @@ namespace Khd.Core.Wcs.Wcs 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); - if (reponseMessage != null && reponseMessage.message == "成功") - { - LogManager.Info("五楼Agv下发任务成功:" + message); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; - item.taskStatus = 1; - lineEquip.equipStatus = 1; - dbContext.Update(lineEquip); - dbContext.Update(item); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 1 }); - WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); - dbContext.Add(wcsCmdLog); - dbContext.Add(wcsCmd); - dbContext.SaveChanges(); - } - else - { - LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); + 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); + if (reponseMessage != null && reponseMessage.message == "成功") + { + LogManager.Info("五楼Agv下发任务成功:" + message); + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + lineEquip.equipStatus = 1; + dbContext.Update(lineEquip); + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); + } } } else if (item.taskType == 33)//原材料到背板安装 @@ -547,38 +550,50 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("五楼Agv完成任务成功:" + wcsCmd.ToJsonString()); if (item.taskType == 66)//移库 { - WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - fromBaseLocation.outstockFlag = "0"; - fromBaseLocation.locationStatus = "1"; - fromBaseLocation.containerCode = null; - fromBaseLocation.updateTime = DateTime.Now; - toBaseLocation.instockFlag = "0"; - toBaseLocation.locationStatus = "1"; - toBaseLocation.containerCode = item.containerNo; - toBaseLocation.updateTime = DateTime.Now; - var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == fromBaseLocation.locationCode).FirstOrDefault(); - if (wmsRawStock != null) + using var transaction = dbContext.Database.BeginTransaction(); + try { - wmsRawStock.locationCode = toBaseLocation.locationCode; - dbContext.Update(wmsRawStock); - } - else - { - var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode); - if (wmsProductStock != null) + var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); + if (wmsRawStock != null) { - wmsProductStock.locationCode = toBaseLocation.locationCode; - dbContext.Update(wmsProductStock); + wmsRawStock.locationCode = item.endPointNo; + dbContext.Update(wmsRawStock); } + else + { + var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo); + if (wmsProductStock != null) + { + wmsProductStock.locationCode = item.currPointNo; + dbContext.Update(wmsProductStock); + } + } + dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation + { + outstockFlag = "0", + locationStatus = "1", + containerCode = null, + updateTime = DateTime.Now + }); + dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation + { + instockFlag = "0", + locationStatus = "1", + containerCode = item.containerNo, + updateTime = DateTime.Now + }); + dbContext.Remove(wcsCmd); + 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); } - dbContext.Remove(wcsCmd); - 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 }); - dbContext.Update(fromBaseLocation); - dbContext.Update(toBaseLocation); - dbContext.SaveChanges(); } else if (item.taskType == 38)//出库 { @@ -589,12 +604,11 @@ namespace Khd.Core.Wcs.Wcs { wmsProductOutstockDetail.executeStatus = "2"; dbContext.Update(wmsProductOutstockDetail); - if (!wmsProductOutstockDetails.Any(t => t.executeStatus != "2")) + if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) { + wmsProductOutstock.endTime = DateTime.Now; wmsProductOutstock.executeStatus = "2"; - dbContext.Update(wmsProductOutstock); } - BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5); wmsBaseLocation.outstockFlag = "0"; @@ -613,9 +627,7 @@ namespace Khd.Core.Wcs.Wcs newTask.floorNo = 1; newTask.taskStatus = 6; newTask.objid = StaticData.SnowId.NextId(); - lineEquip.equipStatus = 0; dbContext.Remove(item); - dbContext.Update(lineEquip); dbContext.Add(newTask); WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); @@ -860,7 +872,7 @@ namespace Khd.Core.Wcs.Wcs stockType = "1", totalAmount = 1, saleOrderId = mesBaseBarcodeInfo.saleOrderId, - safeFlag=mesBaseBarcodeInfo.safeFlag, + safeFlag = mesBaseBarcodeInfo.safeFlag, supplierId = mesBaseBarcodeInfo.manufacturerId, materialId = mesBasePalletInfo.materialId, qualityStatus = "0", @@ -871,6 +883,9 @@ namespace Khd.Core.Wcs.Wcs updateDate = DateTime.Now, warehouseId = 511 }; + BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 5); + lineEquip.equipStatus = 0; + dbContext.Update(lineEquip); dbContext.Add(wmsRawStock); dbContext.Add(wmsBaseLocation); dbContext.Remove(item); diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index e189d48..55e59af 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -83,6 +83,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 511) + .Where(t => t.locationStatus == "1") //.Where(t => t.locationStatus == "1") //.Where(t => string.IsNullOrEmpty(t.containerCode)) .ToList(); diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs index 72d077d..e9f1b0a 100644 --- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs @@ -23,7 +23,7 @@ namespace Khd.Core.Wcs.Wcs Floor = floor; _plc = plc; this._host = host; - this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo== "RFID004"); + this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID004"); this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo.Contains("linesignal04")); } diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 83b0aec..fa25942 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -19,16 +19,16 @@ namespace Khd.Core.Wcs.Wcs { private readonly IHost _host; private readonly Plc.S7.Plc _plc; - + int FloorNo { get; set; } int EquipID = 8; //2楼AGV - + public SecondFloorAGV(IHost host, Plc.S7.Plc plc, int floor) { this._host = host; this._plc = plc; FloorNo = floor; - + } /// /// 启动上件扫描监听 @@ -242,7 +242,7 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("二楼Agv下发任务失败" + item.taskType + message); } } - else if (item.taskType == 57)//周转位-提升机 + else if (item.taskType == 57)//周转位-小包入口 { var startPoint = StaticData.BaseEquip.First(t => t.objid == item.currPointId); WcsCmd wcsCmd = new WcsCmd() @@ -304,25 +304,28 @@ namespace Khd.Core.Wcs.Wcs else if (item.taskType == 50)//库位-提升机 { var startPoint = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - WcsCmd wcsCmd = new WcsCmd() + lineEquip = dbContext.BaseEquip.First(t => t.objid == 2); + if (lineEquip.equipStatus == 0) { - objid = StaticData.SnowId.NextId(), - cmdStatus = 0, - taskId = item.objid, - useFlag = 1, - cmdType = item.taskType, - containerNo = item.containerNo, - createTime = DateTime.Now, - createBy = FloorNo + "楼AGV", - currPointId = item.currPointId, - currPointNo = startPoint.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = lineEquip.agvPositionCode, - }; - var agvTask = new RequestAGVTaskDto - { - reqCode = wcsCmd.objid.ToString(), - positionCodePath = new List + WcsCmd wcsCmd = new WcsCmd() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = item.currPointId, + currPointNo = startPoint.agvPositionCode, + nextPointId = item.endPointId, + nextPointNo = lineEquip.agvPositionCode, + }; + var agvTask = new RequestAGVTaskDto + { + reqCode = wcsCmd.objid.ToString(), + positionCodePath = new List { new () { @@ -335,29 +338,32 @@ namespace Khd.Core.Wcs.Wcs 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); - if (reponseMessage != null && reponseMessage.message == "成功") - { - LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); - Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; - item.taskStatus = 1; - dbContext.Update(item); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); - WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); - dbContext.Add(wcsCmdLog); - dbContext.Add(wcsCmd); - dbContext.SaveChanges(); - } - else - { - LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); + 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); + if (reponseMessage != null && reponseMessage.message == "成功") + { + LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo); + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + lineEquip.equipStatus = 1; + dbContext.Update(lineEquip); + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); + } } } else if (item.taskType == 55)//2F移库 @@ -394,7 +400,10 @@ namespace Khd.Core.Wcs.Wcs 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); @@ -597,7 +606,7 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); } } - else if(item.taskType == 59)//周转位-小包入口 + else if (item.taskType == 59)//周转位-小包入口 { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); @@ -761,32 +770,7 @@ namespace Khd.Core.Wcs.Wcs } else if (wcsCmd.cmdStatus == 5) { - if (item.taskType == 53) - { - if (true) - { - var agvTask = new RequestAGVTaskDto - { - reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode - }; - string message = JsonConvert.SerializeObject(agvTask); - string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message); - ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); - if (reponseMessage != null && reponseMessage.message == "成功") - { - wcsCmd.cmdStatus = 6; - item.taskStatus = 6; - dbContext.Update(item); - dbContext.Update(wcsCmd); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); - dbContext.SaveChanges(); - } - } - - } - else if (item.taskType == 51) + if (item.taskType == 51) { if (true) { @@ -813,6 +797,12 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskStatus == 7) { + if (item.currPointId == 2) + { + lineEquip = dbContext.BaseEquip.First(t => t.objid == 2); + lineEquip.equipStatus = 0; + dbContext.Update(lineEquip); + } if (item.taskType == 49) { //WmsProductInstock? wmsProductInstock = dbContext.WmsProductInstock.FirstOrDefault(t => t.productInstockId == item.orderId); @@ -883,17 +873,21 @@ 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); + if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) + { + wmsProductOutstock.endTime = DateTime.Now; + wmsProductOutstock.executeStatus = "2"; + } wmsProductOutstockDetail.executeStatus = "2"; - wmsProductOutstock.endTime = DateTime.Now; - wmsProductOutstock.executeStatus = "2"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.containerCode = null; + item.taskStatus = 8; dbContext.Remove(wmsProductStock); dbContext.Update(wmsBaseLocation); dbContext.Update(wmsProductOutstockDetail); dbContext.Update(wmsProductOutstock); - dbContext.Remove(item); + dbContext.Update(item); dbContext.Remove(wcsCmd); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 }); dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 }); @@ -916,7 +910,7 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 53) { - BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); + BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); startEquip.equipStatus = 0; BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); endEquip.equipStatus = 1; @@ -932,7 +926,7 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 51) { - BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); + BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); startEquip.equipStatus = 0; dbContext.Update(startEquip); dbContext.Remove(item); @@ -961,38 +955,50 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 55) { - WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - fromBaseLocation.outstockFlag = "0"; - fromBaseLocation.locationStatus = "1"; - fromBaseLocation.containerCode = null; - fromBaseLocation.updateTime = DateTime.Now; - toBaseLocation.instockFlag = "0"; - toBaseLocation.locationStatus = "1"; - toBaseLocation.containerCode = item.containerNo; - toBaseLocation.updateTime = DateTime.Now; - var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == fromBaseLocation.locationCode).FirstOrDefault(); - if (wmsRawStock != null) + using var transaction = dbContext.Database.BeginTransaction(); + try { - wmsRawStock.locationCode = toBaseLocation.locationCode; - dbContext.Update(wmsRawStock); - } - else - { - var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode); - if (wmsProductStock != null) + var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); + if (wmsRawStock != null) { - wmsProductStock.locationCode = toBaseLocation.locationCode; - dbContext.Update(wmsProductStock); + wmsRawStock.locationCode = item.endPointNo; + dbContext.Update(wmsRawStock); } + else + { + var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo); + if (wmsProductStock != null) + { + wmsProductStock.locationCode = item.currPointNo; + dbContext.Update(wmsProductStock); + } + } + dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation + { + outstockFlag = "0", + locationStatus = "1", + containerCode = null, + updateTime = DateTime.Now + }); + dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation + { + instockFlag = "0", + locationStatus = "1", + containerCode = item.containerNo, + updateTime = DateTime.Now + }); + dbContext.Remove(item); + dbContext.Remove(wcsCmd); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 }); + dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 }); + transaction.Commit(); + dbContext.SaveChanges(); + } + catch (Exception ex) + { + transaction.Rollback(); + LogManager.Error(ex); } - dbContext.Update(fromBaseLocation); - dbContext.Update(toBaseLocation); - dbContext.Remove(item); - dbContext.Remove(wcsCmd); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 }); - dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 }); - dbContext.SaveChanges(); } else if (item.taskType == 56) { diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs index bdae9f0..5482ae8 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs @@ -12,12 +12,12 @@ namespace Khd.Core.Wcs.Wcs /// /// 二楼码垛输送线调度 /// - public class SecondFloorPoint + public class SecondFloorLine { private readonly IHost _host; private readonly Plc.S7.Plc _plc; int FloorNo { get; set; } - public SecondFloorPoint(IHost host, Plc.S7.Plc plc, int floor) + public SecondFloorLine(IHost host, Plc.S7.Plc plc, int floor) { this._host = host; this._plc = plc; @@ -44,6 +44,7 @@ namespace Khd.Core.Wcs.Wcs var agvGetPoint = StaticData.BasePlcpointList.First(t => t.id == 53); var agvPutPoint = StaticData.BasePlcpointList.First(t => t.id == 54); BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8); + BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 36); while (true) { try @@ -56,11 +57,10 @@ namespace Khd.Core.Wcs.Wcs { if (Convert.ToInt32(agvPutValue) == 0) { - bool canCreate = dbContext.WcsTask.Where(t => t.endPointId == 36 || t.nextPointId == 8).Any(); + bool canCreate = dbContext.WcsTask.Where(t => t.endPointId == 36 || t.nextPointId == 8 || t.endPointId == endEquip.objid).Any(); if (!canCreate) { - BaseEquip? baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.emptyCount > 1 && t.equipStatus == 1); - BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 36); + BaseEquip? baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.emptyCount > 1); if (baseEquip != null) { var wcsTask = new WcsTask() @@ -81,7 +81,7 @@ namespace Khd.Core.Wcs.Wcs fromFloorNo = 2, isEmpty = "1", qty = baseEquip.emptyCount, - taskType = 57, + taskType = 59, }; dbContext.Add(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); @@ -92,42 +92,83 @@ namespace Khd.Core.Wcs.Wcs } else { - baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount > 1 && t.equipStatus == 1); + baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == 10 && t.equipStatus == 1); if (baseEquip != null) { - + BaseEquip ThirdLineEquip = StaticData.BaseEquip.First(t => t.objid == 3); + BaseEquip ThirdAgvEquip = StaticData.BaseEquip.First(t => t.objid == 9); + if (ThirdLineEquip.equipStatus == 0) + { + //生成3楼Agv出库任务 + WcsTask wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + containerNo = null, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = 2, + fromFloorNo = 3, + isEmpty = "1", + qty = 10, + taskType = 101, + currPointId = baseEquip.objid, + currPointNo = baseEquip.equipNo, + nextPointId = ThirdAgvEquip.objid, + nextPointNo = ThirdAgvEquip.equipNo, + endPointId = endEquip.objid, + endPointNo = endEquip.equipNo, + taskStatus = 0, + useFlag = 1, + }; + dbContext.Add(wcsTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成3楼Agv出库任务成功:" + wcsTask.objid); + LogManager.Info("二楼码垛输送线生成3楼Agv出库任务成功:" + wcsTask.objid); + } } else { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == 40); if (startEquip.emptyCount > 1) { - WcsTaskManual wcsTaskManual = new WcsTaskManual() + BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "someOut"); + BasePlcpoint linesignal01 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal01"); + BasePlcpoint equipstate06 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "equipstate06"); + BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 1); + var lineSignal01Value = StaticData.PlcDic[0].Read(linesignal01.plcpointAddress); + var equipstate06Value = StaticData.PlcDic[0].Read(equipstate06.plcpointAddress); + if (FirstFloor.ReadEmptyLocation() && Convert.ToInt32(lineSignal01Value) == 0 && Convert.ToInt32(equipstate06Value) == 0) { - objid = StaticData.SnowId.NextId(), - startPointId = startEquip.objid, - startPointNo = startEquip.equipNo, - endPointId = endEquip.objid, - endPointNo = endEquip.equipNo, - nextPointId = startEquip.objid, - nextPointNo = startEquip.equipNo, - currPointId = startEquip.objid, - currPointNo = startEquip.equipNo, - taskStatus = 0, - useFlag = 1, - containerNo = null, - createBy = "WCS", - createTime = DateTime.Now, - floorNo = 2, - fromFloorNo = 1, - isEmpty = "1", - qty = startEquip.emptyCount, - taskType = 53, - }; - dbContext.Add(wcsTaskManual); - dbContext.SaveChanges(); - Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成一楼托盘库任务成功:" + wcsTaskManual.objid); - LogManager.Info("二楼码垛输送线生成一楼托盘库任务成功:" + wcsTaskManual.objid); + StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); + WcsTask wcsTaskManual = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + endPointId = endEquip.objid, + endPointNo = endEquip.equipNo, + nextPointId = lineEquip.objid, + nextPointNo = lineEquip.equipNo, + currPointId = lineEquip.objid, + currPointNo = lineEquip.equipNo, + taskStatus = 0, + useFlag = 1, + containerNo = null, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = endEquip.floorNo, + fromFloorNo = 1, + isEmpty = "1", + qty = startEquip.emptyCount, + taskType = 53, + }; + dbContext.Add(wcsTaskManual); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTaskManual); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成手动托盘任务成功:" + wcsTaskManual.objid); + LogManager.Info("二楼码垛输送线生成手动托盘任务成功:" + wcsTaskManual.objid); + } } } } @@ -143,6 +184,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.activeFlag == "1") .Where(t => t.delFlag == "0") .Where(t => t.locationScrapType == "1") + .Where(t => t.locationStatus == "1") .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 231) @@ -153,40 +195,32 @@ namespace Khd.Core.Wcs.Wcs WmsBaseLocation? wmsBaseLocation = null; if (wmsBaseLocations.Count > 0) { - List locDeepLocations = wmsBaseLocations.Where(t => t.locDeep == 1).ToList(); - var bill = from a in wmsProductStocks - join b in locDeepLocations on a.locationCode equals b.locationCode - select new { a, b }; - if (bill.Any()) - { - int? row = 0; - foreach (var item in bill) - { - if (item.b.locRow % 2 == 1) - { - row = item.b.locRow + 1; - } - else - { - row = item.b.locRow - 1; - } - wmsBaseLocation = wmsBaseLocations - .Where(t => t.locDeep == 2) - .Where(t => t.locRow == row) - .Where(t => t.locColumn == item.b.locColumn) - .Where(t => t.containerCode == null || t.containerCode == "") - .FirstOrDefault(); - if (wmsBaseLocation != null) - { - break; - } - } - } - wmsBaseLocation ??= wmsBaseLocations - .Where(t => t.containerCode == null || t.containerCode == "") + List containerCodes = wmsBaseLocations .Where(t => t.locDeep == 1) - .FirstOrDefault(); - wmsBaseLocation ??= wmsBaseLocations.Where(t => t.containerCode == null || t.containerCode == "").FirstOrDefault(); + .Select(t => t.containerCode).ToList();//深库位的托盘 + List mesBasePalletInfos = dbContext.MesBasePalletInfo + .Where(t => t.materialId == mesBasePalletInfo.materialId) + .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料 + + var bill = from a in mesBasePalletInfos + join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode + select new { b };//等于当前任务的物料的托盘的库位信息 + + var outBill = from a in bill + from b in wmsBaseLocations + where a.b.layerNum == b.layerNum + && b.locDeep == 2 + && a.b.locRow == b.locRow + && a.b.locColumn == b.locColumn + && b.locationStatus == "1" + && b.outstockFlag == "0" + && b.instockFlag == "0" + && string.IsNullOrEmpty(b.containerCode) + select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 + + wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位 + wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 2);//找不到再找深库位 + wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 if (wmsBaseLocation != null) { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 37); diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs index 121608c..ffea6b5 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs @@ -5,38 +5,25 @@ using Khd.Core.Wcs.Global; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs { /// /// 二楼接驳位调度 /// - public class SecondFloorLine + public class SecondFloorPoint { private readonly IHost _host; private Plc.S7.Plc _plc; private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineSignal; int FloorNo { get; set; } - public SecondFloorLine(IHost host, Plc.S7.Plc plc, int floor) + public SecondFloorPoint(IHost host, Plc.S7.Plc plc, int floor) { this._host = host; this._plc = plc; FloorNo = floor; - this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo== "RFID002"); - this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo== "linesignal04"); - - //var lineRFID = this._plc.Read(NodeSettingCarNo.plcpointAddress); - try - { - //默认启动,清理plc的上位机写入点位值 - this._plc.Write(LineRFID.plcpointAddress, MainCentralControl.QingKongDianWei); - } - catch (Exception ex) - { - Console.WriteLine("楼层" + floor + " 初始化数据异常" + ex.Message); - LogManager.Error(ex); - } + this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002"); + this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02"); } /// /// 启动上件扫描监听 @@ -68,7 +55,8 @@ namespace Khd.Core.Wcs.Wcs //入库任务 var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress); var isSignal = this._plc.Read(LineSignal.plcpointAddress); - var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress); + //var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress); + var agvPutValue = ""; if (rfid != null && isSignal != null) { @@ -76,17 +64,16 @@ namespace Khd.Core.Wcs.Wcs if (Convert.ToInt32(isSignal) == 1) { //获取条码信息 - var palletNo = Convert.ToString(rfid); - BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo); + BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == 2); var wcsTask = dbContext.WcsTask.OrderBy(t => t.createTime) - .FirstOrDefault(t => t.containerNo == palletNo && t.nextPointId == baseEquip.objid); + .FirstOrDefault(); if (wcsTask != null) { if (wcsTask.taskStatus == 5)//入托盘入口,提升机任务是完成状态 { if (wcsTask.taskType != 99) { - if (Convert.ToInt32(agvPutValue) == 0) + if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料 { dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); @@ -96,7 +83,7 @@ namespace Khd.Core.Wcs.Wcs newTask.nextPointNo = agvEquip.equipNo; newTask.createTime = DateTime.Now; newTask.updateTime = DateTime.Now; - newTask.containerNo = palletNo; + newTask.containerNo = rfid; newTask.currPointId = lineEquip.objid; newTask.currPointNo = lineEquip.equipNo; newTask.endPointId = inEquip.objid; @@ -107,10 +94,10 @@ namespace Khd.Core.Wcs.Wcs WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); } - else if (Convert.ToInt32(agvPutValue) == 1) + else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0) { BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0); if (endEquip != null) @@ -123,7 +110,7 @@ namespace Khd.Core.Wcs.Wcs newTask.nextPointNo = agvEquip.equipNo; newTask.createTime = DateTime.Now; newTask.updateTime = DateTime.Now; - newTask.containerNo = palletNo; + newTask.containerNo = rfid; newTask.currPointId = lineEquip.objid; newTask.currPointNo = lineEquip.equipNo; newTask.endPointId = endEquip.objid; @@ -134,8 +121,8 @@ namespace Khd.Core.Wcs.Wcs WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); } } } @@ -143,7 +130,7 @@ namespace Khd.Core.Wcs.Wcs { if (wcsTask.endPointId == 36) { - if (Convert.ToInt32(agvPutValue) == 0) + if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料 { dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); @@ -153,7 +140,7 @@ namespace Khd.Core.Wcs.Wcs newTask.nextPointNo = agvEquip.equipNo; newTask.createTime = DateTime.Now; newTask.updateTime = DateTime.Now; - newTask.containerNo = palletNo; + newTask.containerNo = rfid; newTask.currPointId = lineEquip.objid; newTask.currPointNo = lineEquip.equipNo; newTask.endPointId = inEquip.objid; @@ -164,10 +151,10 @@ namespace Khd.Core.Wcs.Wcs WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); } - else if (Convert.ToInt32(agvPutValue) == 1) + else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0) { BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0); if (endEquip != null) @@ -180,7 +167,7 @@ namespace Khd.Core.Wcs.Wcs newTask.nextPointNo = agvEquip.equipNo; newTask.createTime = DateTime.Now; newTask.updateTime = DateTime.Now; - newTask.containerNo = palletNo; + newTask.containerNo = rfid; newTask.currPointId = lineEquip.objid; newTask.currPointNo = lineEquip.equipNo; newTask.endPointId = endEquip.objid; @@ -191,37 +178,15 @@ namespace Khd.Core.Wcs.Wcs WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); } } } else if (wcsTask.endPointId == 38) { - dbContext.WcsTask.Remove(wcsTask); - WcsTask newTask = CoreMapper.Map(wcsTask); - newTask.taskStatus = 0; - newTask.objid = StaticData.SnowId.NextId(); - newTask.nextPointId = agvEquip.objid; - newTask.nextPointNo = agvEquip.equipNo; - newTask.createTime = DateTime.Now; - newTask.updateTime = DateTime.Now; - newTask.containerNo = palletNo; - newTask.currPointId = lineEquip.objid; - newTask.currPointNo = lineEquip.equipNo; - newTask.taskType = 53; - newTask.useFlag = 1; - dbContext.WcsTask.Add(newTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); - dbContext.Add(wcsTaskLog); - dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); - } - else - { - BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0); - if (endEquip != null) + var endEquip = dbContext.BaseEquip.First(t => t.objid == 38); + if (endEquip.emptyCount == 0) { dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); @@ -231,52 +196,75 @@ namespace Khd.Core.Wcs.Wcs newTask.nextPointNo = agvEquip.equipNo; newTask.createTime = DateTime.Now; newTask.updateTime = DateTime.Now; - newTask.containerNo = palletNo; + newTask.containerNo = rfid; newTask.currPointId = lineEquip.objid; newTask.currPointNo = lineEquip.equipNo; - newTask.endPointId = endEquip.objid; - newTask.endPointNo = endEquip.equipNo; - newTask.taskType = 58; + newTask.taskType = 53; newTask.useFlag = 1; dbContext.WcsTask.Add(newTask); WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); + } + else + { + endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0); + if (endEquip != null) + { + dbContext.WcsTask.Remove(wcsTask); + WcsTask newTask = CoreMapper.Map(wcsTask); + newTask.taskStatus = 0; + newTask.objid = StaticData.SnowId.NextId(); + newTask.nextPointId = agvEquip.objid; + newTask.nextPointNo = agvEquip.equipNo; + newTask.createTime = DateTime.Now; + newTask.updateTime = DateTime.Now; + newTask.containerNo = rfid; + newTask.currPointId = lineEquip.objid; + newTask.currPointNo = lineEquip.equipNo; + newTask.endPointId = endEquip.objid; + newTask.endPointNo = endEquip.equipNo; + newTask.taskType = 58; + newTask.useFlag = 1; + dbContext.WcsTask.Add(newTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); + } } } } } else if (wcsTask.taskStatus == 8) { - if (wcsTask.taskType == 44) - { - BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 3); - dbContext.WcsTask.Remove(wcsTask); - WcsTask newTask = CoreMapper.Map(wcsTask); - newTask.serialNo = SystemData.GetSerialNo(dbContext); - newTask.taskStatus = 0; - newTask.objid = StaticData.SnowId.NextId(); - newTask.nextPointId = tsjEquip.objid; - newTask.nextPointNo = tsjEquip.equipNo; - newTask.createTime = DateTime.Now; - newTask.updateTime = DateTime.Now; - newTask.endPointId = endEquip.objid; - newTask.endPointNo = endEquip.equipNo; - newTask.containerNo = palletNo; - newTask.currPointId = lineEquip.objid; - newTask.currPointNo = lineEquip.equipNo; - newTask.useFlag = 1; - newTask.fromFloorNo = 2; - newTask.floorNo = endEquip.floorNo; - dbContext.WcsTask.Add(newTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); - dbContext.Add(wcsTaskLog); - dbContext.SaveChanges(); - LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + palletNo); - Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + palletNo); - } + BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 1); + dbContext.WcsTask.Remove(wcsTask); + WcsTask newTask = CoreMapper.Map(wcsTask); + newTask.serialNo = SystemData.GetSerialNo(dbContext); + newTask.taskStatus = 0; + newTask.objid = StaticData.SnowId.NextId(); + newTask.nextPointId = tsjEquip.objid; + newTask.nextPointNo = tsjEquip.equipNo; + newTask.createTime = DateTime.Now; + newTask.updateTime = DateTime.Now; + newTask.endPointId = endEquip.objid; + newTask.endPointNo = endEquip.equipNo; + newTask.containerNo = rfid; + newTask.currPointId = lineEquip.objid; + newTask.currPointNo = lineEquip.equipNo; + newTask.useFlag = 1; + newTask.fromFloorNo = 2; + newTask.floorNo = endEquip.floorNo; + dbContext.WcsTask.Add(newTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + rfid); + Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + rfid); } } } diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index 0b37be0..d87184b 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -1,7 +1,6 @@ using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; -using Khd.Core.Plc; using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools; @@ -9,11 +8,6 @@ using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Khd.Core.Wcs.Wcs { @@ -193,12 +187,12 @@ namespace Khd.Core.Wcs.Wcs /// private void MessageSynchronousLogic(object? obj) { - + while (true) { try { - + HositerLogic(); //CtuLineLogic(); ThirdAgvLogic(); diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index cd49b48..23d71a4 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -58,37 +58,31 @@ namespace Khd.Core.Wcs.Wcs var getTrayValue = this._plc.Read(getTrayPoint.plcpointAddress); if (getTrayValue != null && Convert.ToInt32(getTrayValue) == 1) { - bool hasTask = dbContext.WcsTask.Where(t => t.taskType == 41 || t.taskType == 42).Any(); - if (!hasTask) + var task = dbContext.WcsTask.Where(t => t.taskType == 42 && t.useFlag == 0).FirstOrDefault(); + if (task!=null) { BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 35); BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 31); BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 9); if (endEquip.emptyCount != (SystemData.maxTray / 2) && endEquip.emptyCount != SystemData.maxTray) { - WcsTask wcsTask = new() - { - objid = StaticData.SnowId.NextId(), - taskType = 42, - taskStatus = 0, - useFlag = 1, - createBy = FloorNo + "楼AGV", - nextPointId = agvEquip.objid, - nextPointNo = agvEquip.agvPositionCode, - currPointId = startEquip.objid, - currPointNo = startEquip.agvPositionCode, - endPointId = endEquip.objid, - endPointNo = endEquip.agvPositionCode, - containerNo = null, - createTime = DateTime.Now, - isEmpty = "1", - qty = 1, - }; - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + task.taskType = 42; + task.useFlag = 1; + task.taskStatus = 1; + task.isEmpty = "1"; + task.qty = 1; + task.nextPointId = agvEquip.objid; + task.nextPointNo = agvEquip.agvPositionCode; + task.currPointId = startEquip.objid; + task.currPointNo = startEquip.agvPositionCode; + task.endPointId = endEquip.objid; + task.endPointNo = endEquip.agvPositionCode; + task.createTime = DateTime.Now; + dbContext.Update(task); + WcsTaskLog wcsTaskLog = CoreMapper.Map(task); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); - LogManager.Info("三楼AGV 生成空托盘入收集架任务:" + wcsTask.objid); + LogManager.Info("三楼AGV 生成空托盘入收集架任务:" + task.objid); } } } @@ -118,7 +112,7 @@ namespace Khd.Core.Wcs.Wcs if (item.taskStatus == 0) { BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType); - if (item.taskType == 67) + if (item.taskType == 67)//移库 { WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); @@ -482,25 +476,27 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 3); - WcsCmd wcsCmd = new WcsCmd() + if (lineEquip.equipStatus == 0) { - objid = StaticData.SnowId.NextId(), - cmdStatus = 0, - taskId = item.objid, - useFlag = 1, - cmdType = item.taskType, - containerNo = item.containerNo, - createTime = DateTime.Now, - createBy = FloorNo + "楼AGV", - currPointId = startEquip.objid, - currPointNo = startEquip.agvPositionCode, - nextPointId = lineEquip.objid, - nextPointNo = lineEquip.equipNo, - }; - var agvTask = new RequestAGVTaskDto - { - reqCode = StaticData.SnowId.NextId().ToString(), - positionCodePath = new List + WcsCmd wcsCmd = new WcsCmd() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = startEquip.objid, + currPointNo = startEquip.agvPositionCode, + nextPointId = lineEquip.objid, + nextPointNo = lineEquip.equipNo, + }; + var agvTask = new RequestAGVTaskDto + { + reqCode = StaticData.SnowId.NextId().ToString(), + positionCodePath = new List { new() { @@ -513,28 +509,95 @@ namespace Khd.Core.Wcs.Wcs type = "00" } }, - taskTyp = baseDictionary.dicValue, - ctnrTyp = "2", - ctnrNum = startEquip.emptyCount.ToString() - }; - 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); - if (reponseMessage != null && reponseMessage.message == "成功") - { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; - item.taskStatus = 1; - dbContext.Update(item); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); - WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); - dbContext.Add(wcsCmdLog); - dbContext.Add(wcsCmd); - dbContext.SaveChanges(); + taskTyp = baseDictionary.dicValue, + ctnrTyp = "2", + ctnrNum = startEquip.emptyCount.ToString() + }; + 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); + if (reponseMessage != null && reponseMessage.message == "成功") + { + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + lineEquip.equipStatus = 1; + dbContext.Update(lineEquip); + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("三楼Agv下发任务失败" + item.taskType + message); + } } - else + } + else if (item.taskType == 101) + { + BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 3); + BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); + if (lineEquip.equipStatus == 0) { - LogManager.Info("三楼Agv下发任务失败" + item.taskType + message); + WcsCmd wcsCmd = new WcsCmd() + { + objid = StaticData.SnowId.NextId(), + cmdStatus = 0, + taskId = item.objid, + useFlag = 1, + cmdType = item.taskType, + containerNo = item.containerNo, + createTime = DateTime.Now, + createBy = FloorNo + "楼AGV", + currPointId = startEquip.objid, + currPointNo = startEquip.agvPositionCode, + nextPointId = lineEquip.objid, + nextPointNo = lineEquip.equipNo, + }; + var agvTask = new RequestAGVTaskDto + { + reqCode = StaticData.SnowId.NextId().ToString(), + positionCodePath = new List + { + new() + { + positionCode = wcsCmd.currPointNo, + type = "00" + }, + new() + { + positionCode = wcsCmd.nextPointNo, + type = "00" + } + }, + taskTyp = baseDictionary.dicValue, + ctnrTyp = "2", + ctnrNum = startEquip.emptyCount.ToString() + }; + 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); + if (reponseMessage != null && reponseMessage.message == "成功") + { + wcsCmd.taskCode = reponseMessage.data; + wcsCmd.cmdStatus = 1; + item.taskStatus = 1; + lineEquip.equipStatus = 1; + dbContext.Update(lineEquip); + dbContext.Update(item); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); + WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); + dbContext.Add(wcsCmdLog); + dbContext.Add(wcsCmd); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("三楼Agv下发任务失败" + item.taskType + message); + } } } } @@ -545,6 +608,32 @@ namespace Khd.Core.Wcs.Wcs { if (item.taskStatus == 3) { + if (item.currPointId == 3)//从提升机开始 + { + BasePlcpoint lineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal03"); + BasePlcpoint Rfid = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID003"); + var lineSignalValue = StaticData.PlcDic[0].Read(lineSignal.plcpointAddress); + var RfidValue = StaticData.PlcDic[0].ReadRFID(Rfid.plcpointAddress); + if (lineSignalValue == null || item.containerNo != RfidValue || Convert.ToInt32(lineSignalValue) == 0) + { + LogManager.Info($"三楼Agv继续任务失败,所取货物与任务不符,任务货物为{item.containerNo},RFID为{RfidValue},线路信号为{lineSignalValue}"); + Console.WriteLine($"{DateTime.Now}:三楼Agv继续任务失败,所取货物与任务不符,任务货物为{item.containerNo},RFID为{RfidValue},线路信号为{lineSignalValue}"); + Thread.Sleep(1000); + continue; + } + } + if (item.endPointId == 3) + { + BasePlcpoint lineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal03"); + var lineSignalValue = StaticData.PlcDic[0].Read(lineSignal.plcpointAddress); + if (lineSignalValue == null || Convert.ToInt32(lineSignalValue) == 1) + { + LogManager.Info($"三楼Agv继续任务失败,提升机有货物"); + Console.WriteLine($"{DateTime.Now}:三楼Agv继续任务失败,提升机有货物"); + Thread.Sleep(1000); + continue; + } + } var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), @@ -555,6 +644,7 @@ namespace Khd.Core.Wcs.Wcs ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { + wcsCmd.cmdStatus = 4; dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.Update(wcsCmd); @@ -565,40 +655,58 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskStatus == 5) { + if (item.currPointId == 3) + { + BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 3); + lineEquip.equipStatus = 0; + dbContext.Update(lineEquip); + } if (item.taskType == 67) { - WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - fromBaseLocation.outstockFlag = "0"; - fromBaseLocation.locationStatus = "1"; - fromBaseLocation.containerCode = null; - fromBaseLocation.updateTime = DateTime.Now; - toBaseLocation.instockFlag = "0"; - toBaseLocation.locationStatus = "1"; - toBaseLocation.containerCode = item.containerNo; - toBaseLocation.updateTime = DateTime.Now; - var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == fromBaseLocation.locationCode).FirstOrDefault(); - if (wmsRawStock != null) + using var transaction = dbContext.Database.BeginTransaction(); + try { - wmsRawStock.locationCode = toBaseLocation.locationCode; - dbContext.Update(wmsRawStock); - } - else - { - var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode); - if (wmsProductStock != null) + var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); + if (wmsRawStock != null) { - wmsProductStock.locationCode = toBaseLocation.locationCode; - dbContext.Update(wmsProductStock); + wmsRawStock.locationCode = item.endPointNo; + dbContext.Update(wmsRawStock); } + else + { + var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo); + if (wmsProductStock != null) + { + wmsProductStock.locationCode = item.currPointNo; + dbContext.Update(wmsProductStock); + } + } + dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation + { + outstockFlag = "0", + locationStatus = "1", + containerCode = null, + updateTime = DateTime.Now + }); + dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation + { + instockFlag = "0", + locationStatus = "1", + containerCode = item.containerNo, + updateTime = DateTime.Now + }); + dbContext.Remove(wcsCmd); + 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); } - dbContext.Update(fromBaseLocation); - dbContext.Update(toBaseLocation); - dbContext.Remove(wcsCmd); - 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 }); - dbContext.SaveChanges(); } if (item.taskType == 39) { @@ -656,7 +764,7 @@ namespace Khd.Core.Wcs.Wcs startEquip.equipStatus = 0; startEquip.updateTime = DateTime.Now; startEquip.updateBy = "WCS"; - endEquip.emptyCount = item.qty; + endEquip.emptyCount += item.qty; endEquip.equipStatus = 1; endEquip.updateTime = DateTime.Now; endEquip.updateBy = "WCS"; @@ -691,12 +799,25 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31); endEquip.emptyCount = 1; + if (wmsRawOutstock.realOutstockAmount == wmsRawOutstock.outstockAmount) + { + wmsRawOutstock.endTime = DateTime.Now; + wmsRawOutstock.executeStatus = "2"; + } dbContext.Update(endEquip); dbContext.Update(wmsRawOutstock); dbContext.Remove(wmsRawStock); dbContext.Update(wmsBaseLocation); dbContext.Remove(wcsCmd); + WcsTask wcsTask = CoreMapper.Map(item); + wcsTask.objid = StaticData.SnowId.NextId(); + wcsTask.taskStatus = 0; + wcsTask.useFlag = 0; + wcsTask.taskType = 42; + wcsTask.createBy = "WCS"; + wcsTask.createTime = DateTime.Now; dbContext.Remove(item); + dbContext.Add(wcsTask); 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(); @@ -729,6 +850,7 @@ namespace Khd.Core.Wcs.Wcs emptyEquip.updateTime = DateTime.Now; emptyEquip.updateBy = "WCS"; endEquip.emptyCount += item.qty; + endEquip.equipStatus = 1; endEquip.updateTime = DateTime.Now; endEquip.updateBy = "WCS"; dbContext.Update(endEquip); @@ -739,11 +861,12 @@ namespace Khd.Core.Wcs.Wcs dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.SaveChanges(); } - else if (item.taskType == 44) + else if (item.taskType == 44 || item.taskType == 101) { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 3); startEquip.emptyCount = 0; + startEquip.equipStatus = 0; startEquip.updateTime = DateTime.Now; startEquip.updateBy = "WCS"; dbContext.Update(startEquip); diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs index 76bfa3e..c350e56 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs @@ -24,8 +24,8 @@ namespace Khd.Core.Wcs.Wcs this._host = host; this._plc = plc; FloorNo = floor; - this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo== "RFID002"); - this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo== "linesignal02"); + this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002"); + this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02"); } /// /// 启动上件扫描监听 @@ -58,83 +58,82 @@ namespace Khd.Core.Wcs.Wcs if (Convert.ToInt32(isSignal) == 1)//托盘到位 { BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 1); - var wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.containerNo == rfid && t.nextPointId == baseEquip.objid); + var wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.nextPointId == baseEquip.objid); var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 4);//背负Agv if (wcsTask != null)//如果不是null { if (wcsTask.taskStatus == 5)//提升机任务是完成状态 { + var wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseFloor == FloorNo) + .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.locationStatus == "1") + .ToList(); + + List containerCodes = wmsBaseLocations.Where(t => t.locDeep == 1).Select(t => t.containerCode).ToList();//深库位的托盘 + List mesBasePalletInfos = dbContext.MesBasePalletInfo + .Where(t => t.materialId == wcsTask.materialId) + .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料 + + var bill = from a in mesBasePalletInfos + join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode + select new { b };//等于当前任务的物料的托盘的库位信息 + + var outBill = from a in bill + from b in wmsBaseLocations + where a.b.layerNum == b.layerNum + && b.locDeep == 2 + && a.b.locRow == b.locRow + && a.b.locColumn == b.locColumn + && b.locationStatus == "1" + && b.outstockFlag == "0" + && b.instockFlag == "0" + && string.IsNullOrEmpty(b.containerCode) + select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 + WmsBaseLocation? wmsBaseLocation = null; + 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) { - var wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseFloor == FloorNo) - .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") - .ToList(); - - List containerCodes = wmsBaseLocations.Where(t => t.locDeep == 1).Select(t => t.containerCode).ToList();//深库位的托盘 - List mesBasePalletInfos = dbContext.MesBasePalletInfo - .Where(t => t.materialId == wcsTask.materialId) - .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料 - - var bill = from a in mesBasePalletInfos - join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode - select new { b };//等于当前任务的物料的托盘的库位信息 - - var outBill = from a in bill - from b in wmsBaseLocations - where a.b.layerNum == b.layerNum - && b.locDeep == 2 - && a.b.locRow == b.locRow - && a.b.locColumn == b.locColumn - && b.locationStatus == "1" - && b.outstockFlag == "0" - && b.instockFlag == "0" - && string.IsNullOrEmpty(b.containerCode) - select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 - WmsBaseLocation? wmsBaseLocation = null; - 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) + dbContext.Remove(wcsTask); + WcsTask newTask = CoreMapper.Map(wcsTask); + newTask.objid = StaticData.SnowId.NextId(); + newTask.taskStatus = 0;//创建状态 + newTask.updateTime = DateTime.Now; + newTask.currPointId = baseEquip.objid; + newTask.currPointNo = baseEquip.equipNo; + newTask.nextPointId = AgvEquip.objid; + newTask.nextPointNo = AgvEquip.equipNo; + newTask.endPointId = wmsBaseLocation.locationId; + newTask.endPointNo = wmsBaseLocation.locationCode; + if (wmsBaseLocation.warehouseId == 311) { - dbContext.Remove(wcsTask); - WcsTask newTask = CoreMapper.Map(wcsTask); - newTask.objid = StaticData.SnowId.NextId(); - newTask.taskStatus = 0;//创建状态 - newTask.updateTime = DateTime.Now; - newTask.currPointId = baseEquip.objid; - newTask.currPointNo = baseEquip.equipNo; - newTask.nextPointId = AgvEquip.objid; - newTask.nextPointNo = AgvEquip.equipNo; - newTask.endPointId = wmsBaseLocation.locationId; - newTask.endPointNo = wmsBaseLocation.locationCode; - if (wmsBaseLocation.warehouseId == 311) - { - newTask.taskType = 39; - } - else - { - Console.WriteLine("查找入库库位失败"); - Thread.Sleep(1000); - continue; - } - newTask.useFlag = 1; - wmsBaseLocation.instockFlag = "1"; - wmsBaseLocation.locationStatus = "2"; - dbContext.Update(wmsBaseLocation); - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); - dbContext.Add(wcsTaskLog); - dbContext.SaveChanges(); + newTask.taskType = 39; } else { - Console.WriteLine(DateTime.Now + ":三楼楼接驳位调度入库任务,未找到库位"); - LogManager.Info("三楼接驳位调度入库任务,未找到库位"); + Console.WriteLine("查找入库库位失败"); + Thread.Sleep(1000); + continue; } + newTask.useFlag = 1; + wmsBaseLocation.instockFlag = "1"; + wmsBaseLocation.locationStatus = "2"; + dbContext.Update(wmsBaseLocation); + dbContext.Add(wcsTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + } + else + { + Console.WriteLine(DateTime.Now + ":三楼楼接驳位调度入库任务,未找到库位"); + LogManager.Info("三楼接驳位调度入库任务,未找到库位"); } } else if (wcsTask.taskStatus == 6)//小车任务是完成状态,说明是出库 @@ -143,6 +142,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); newTask.objid = StaticData.SnowId.NextId(); + newTask.containerNo = rfid; newTask.nextPointId = nextEquip.objid; newTask.nextPointNo = nextEquip.equipNo; newTask.currPointId = baseEquip.objid; diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs index 2aab49f..0d5538d 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs @@ -1,7 +1,6 @@ using HandyControl.Tools.Extension; using Jc.SnowId; using Khd.Core.Domain.Auth; -using Khd.Core.Domain.Dto.agv; using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; @@ -1079,7 +1078,7 @@ namespace Khd.Core.Wpf.Form using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); var wcsCmd = dbContext.WcsCmd - .Where(t => t.cmdStatus == 6||t.cmdStatus==3) + .Where(t => t.cmdStatus == 6 || t.cmdStatus == 3) .FirstOrDefault(); if (wcsCmd == null) { @@ -1087,8 +1086,8 @@ namespace Khd.Core.Wpf.Form } else { - WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId&&t.nextPointId==10); - if(wcsTask == null) + WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId && t.nextPointId == 10); + if (wcsTask == null) { MessageBox.Show("未查询到当前有背负式Agv由装配区到捡料区任务"); return; @@ -1099,7 +1098,7 @@ namespace Khd.Core.Wpf.Form wcsCmd.cmdStatus = 4; wcsTask.taskStatus = 4; } - else if(wcsCmd.cmdStatus == 6) + else if (wcsCmd.cmdStatus == 6) { wcsCmd.cmdStatus = 7; wcsTask.taskStatus = 7; @@ -1416,13 +1415,13 @@ namespace Khd.Core.Wpf.Form txtInScan.Text = string.Empty; return; } - if(container == null) + if (container == null) { MessageBox.Show("未查询到该容器!"); txtInBox.Text = string.Empty; return; } - if(material == null) + if (material == null) { MessageBox.Show("未查询到该条码内容!"); txtInBarCode.Text = string.Empty; @@ -1687,7 +1686,7 @@ namespace Khd.Core.Wpf.Form if (mesBaseBarcodeInfo != null) { WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock - .Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount&&t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId)).FirstOrDefault(); + .Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount && t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId)).FirstOrDefault(); if (wmsRawOutstock != null) { wmsRawOutstock.realOutstockAmount += outScan; @@ -2518,7 +2517,7 @@ namespace Khd.Core.Wpf.Form { using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); - var baseEquip = SystemData.BaseEquip.First(t => t.objid == 38); + var baseEquip = dbContext.BaseEquip.First(t => t.objid == 38); var agvEquip = SystemData.BaseEquip.First(t => t.objid == 8); bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid).Any(); bool hasTaskManual = dbContext.WcsTaskManual.Where(t => t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid).Any(); @@ -2541,7 +2540,7 @@ namespace Khd.Core.Wpf.Form { objid = Global.SnowId.NextId(), taskType = 56, - containerNo = null, + containerNo = baseEquip.containerNo, currPointId = baseEquip.objid, currPointNo = baseEquip.equipNo, nextPointId = agvEquip.objid, @@ -2618,8 +2617,8 @@ namespace Khd.Core.Wpf.Form WcsTaskManual task = new() { objid = Global.SnowId.NextId(), - taskType = 56, - containerNo = null, + taskType = 54, + containerNo = startEquip.containerNo, currPointId = startEquip.objid, currPointNo = startEquip.equipNo, nextPointId = agvEquip.objid, diff --git a/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskEditForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskEditForm.xaml.cs index 9d03c42..c12b623 100644 --- a/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskEditForm.xaml.cs +++ b/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskEditForm.xaml.cs @@ -5,15 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; -using System.Threading.Tasks; using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; namespace Khd.Core.Wpf.TaskForm.Inventory { @@ -28,7 +20,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory private readonly string _materialName; private readonly InventoryTaskForm _inventoryTaskForm; private readonly string _locationCode; - public InventoryTaskEditForm(Microsoft.Extensions.Hosting.IHost _host, long materialId, string containerNo, string materialName,string locationCode, InventoryTaskForm inventoryTaskForm) + public InventoryTaskEditForm(Microsoft.Extensions.Hosting.IHost _host, long materialId, string containerNo, string materialName, string locationCode, InventoryTaskForm inventoryTaskForm) { InitializeComponent(); this._host = _host; @@ -45,8 +37,8 @@ namespace Khd.Core.Wpf.TaskForm.Inventory { this.ContainerNo.Text = _containerNo; this.MaterialSpec.Text = _materialName; - using var scope= this._host.Services.CreateScope(); - using var dbContext= scope.ServiceProvider.GetRequiredService(); + using var scope = this._host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); var wmsRawStocks = dbContext.WmsRawStock.Where(t => t.palletInfoCode == _containerNo && t.materialId == _materialId).ToList(); if (wmsRawStocks.Count == 0) { @@ -106,7 +98,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory List list = this.BarCode.Text.Split('\n').ToList(); StringBuilder addStr = new StringBuilder(); List addList = newList.Where(t => !list.Contains(t)).ToList(); - if(addList.Count > 0) + if (addList.Count > 0) { addStr.AppendLine("新增条码:"); addStr.AppendLine(string.Join(",", addList)); @@ -118,31 +110,31 @@ namespace Khd.Core.Wpf.TaskForm.Inventory removeStr.AppendLine("删除条码:"); removeStr.AppendLine(string.Join(",", removeList)); } - if(addStr.Length > 0 || removeStr.Length > 0) + if (addStr.Length > 0 || removeStr.Length > 0) { MessageBoxResult messageBoxResult = MessageBox.Show(addStr.ToString() + "\n" + removeStr.ToString(), "提示", MessageBoxButton.OK, MessageBoxImage.Information); if (messageBoxResult == MessageBoxResult.OK) { using var scope = this._host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); - if(addList.Count > 0) + if (addList.Count > 0) { var wmsRawStocks = dbContext.WmsRawStock.Where(t => addList.Contains(t.instockBatch)).ToList(); List rawList = wmsRawStocks.Select(t => t.instockBatch).ToList(); - addList.RemoveAll(t=>rawList.Contains(t)); + addList.RemoveAll(t => rawList.Contains(t)); if (wmsRawStocks.Count > 0) { string waring = string.Join(",\n", wmsRawStocks.Select(t => new { - message=t.locationCode+":"+t.instockBatch + message = t.locationCode + ":" + t.instockBatch })); MessageBoxResult result = MessageBox.Show("条码已经在其他料箱中" + waring + "确认移动到当前料箱吗?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question); if (result == MessageBoxResult.OK) { - foreach(var wmsRawStock in wmsRawStocks) + foreach (var wmsRawStock in wmsRawStocks) { wmsRawStock.palletInfoCode = _containerNo; - wmsRawStock.locationCode= _locationCode; + wmsRawStock.locationCode = _locationCode; wmsRawStock.updateBy = "WCS"; wmsRawStock.updateDate = DateTime.Now; } @@ -168,19 +160,19 @@ namespace Khd.Core.Wpf.TaskForm.Inventory materialId = _materialId, instockBatch = barcode, safeFlag = mesBaseBarcodeInfo.safeFlag, - stockType="1", - activeFlag="1", - supplierId=mesBaseBarcodeInfo.manufacturerId, - completeFlag="1", - frozenAmount=0, - instockDate=DateTime.Now, - qualityStatus="0", - rawStockId=Global.SnowId.NextId(), - occupyAmount=0, - totalAmount=mesBaseBarcodeInfo.batchFlag=="1"?mesBaseBarcodeInfo.amount:1, - warehouseFloor=5, - warehouseId=512, - saleOrderId=mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId, + stockType = "1", + activeFlag = "1", + supplierId = mesBaseBarcodeInfo.manufacturerId, + completeFlag = "1", + frozenAmount = 0, + instockDate = DateTime.Now, + qualityStatus = "0", + rawStockId = Global.SnowId.NextId(), + occupyAmount = 0, + totalAmount = mesBaseBarcodeInfo.batchFlag == "1" ? mesBaseBarcodeInfo.amount : 1, + warehouseFloor = 5, + warehouseId = 512, + saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId, locationCode = _locationCode, createBy = "WCS", createDate = DateTime.Now, @@ -194,7 +186,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory return; } } - if(newWmsRawStocks.Count > 0) + if (newWmsRawStocks.Count > 0) { dbContext.AddRange(newWmsRawStocks); } diff --git a/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskForm.xaml.cs index b520cd1..284f8fb 100644 --- a/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskForm.xaml.cs +++ b/src/Khd.Core.Wpf/TaskForm/Inventory/InventoryTaskForm.xaml.cs @@ -3,21 +3,9 @@ using Khd.Core.EntityFramework; using Khd.Core.Wpf.TaskForm.Inventory; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Timers; using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; namespace Khd.Core.Wpf.TaskForm { diff --git a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml index 7884cab..2fdd91d 100644 --- a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml +++ b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml @@ -5,6 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Khd.Core.Wpf.TaskForm" mc:Ignorable="d" + Loaded="Window_Loaded" WindowStartupLocation="CenterScreen" Background="#333333" Height="450" Width="800"> @@ -23,7 +24,7 @@ - +