From c0b82344979d5c388b8d4845757d5dd3bb7b65f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com> Date: Mon, 22 Jul 2024 18:52:19 +0800 Subject: [PATCH] 20240722 --- .../WcsTaskApplication.cs | 273 +++++------- src/Khd.Core.Domain/Models/WcsTask.cs | 3 +- src/Khd.Core.Domain/Models/WmsBaseLocation.cs | 20 +- src/Khd.Core.Plc/StaticPlcHelper.cs | 7 +- src/Khd.Core.Wcs/MainCentralControl.cs | 5 +- src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 126 +++--- src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 249 ++++++----- src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 260 +++--------- src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs | 52 +-- src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 129 ++---- src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 71 ++-- src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 395 ++++------------- src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs | 251 ++++++----- src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 10 +- src/Khd.Core.Wcs/Wcs/SystemTimer.cs | 2 +- src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs | 398 +++++------------- src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs | 8 +- src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 10 +- 18 files changed, 791 insertions(+), 1478 deletions(-) diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs index 4131d7e..b7a2000 100644 --- a/src/Khd.Core.Application/WcsTaskApplication.cs +++ b/src/Khd.Core.Application/WcsTaskApplication.cs @@ -54,91 +54,62 @@ namespace Khd.Core.Application try { _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var wcscmd = _dbContext.WcsCmd - .Where(t => t.taskCode == agvCallbackDto.taskCode) - .FirstOrDefault(); - if (wcscmd != null) + WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.taskCode == agvCallbackDto.taskCode); + if (wcsTask != null) { - WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcscmd.taskId); - if (wcsTask != null) + //start 开始 end结束 continue继续 + //待取货 + if (agvCallbackDto.method.ToLower() == "start") { - Console.WriteLine(agvCallbackDto.method.ToLower() + "," + wcscmd.objid + "," + wcscmd.taskCode); - LogManager.Info(agvCallbackDto.method.ToLower() + "," + wcscmd.objid + "," + wcscmd.taskCode); - //start 开始 end结束 continue继续 - //待取货 - if (agvCallbackDto.method.ToLower() == "start") + wcsTask.taskStatus = 2; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + if (agvCallbackDto.method.ToLower() == "con") + { + wcsTask.taskStatus = 4; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + //已取货待放货 + if (agvCallbackDto.method.ToLower() == "continue") + { + + wcsTask.taskStatus = 3; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + //放货完成 + if (agvCallbackDto.method.ToLower() == "end") + { + if (wcsTask.nextPointId != 10) { - wcscmd.cmdStatus = 2; - wcscmd.sendFlag = 1; - wcsTask.taskStatus = 2; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 2 }); + wcsTask.taskStatus = 5; + _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 }); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; } - if (agvCallbackDto.method.ToLower() == "con") + else { - wcscmd.sendFlag = 1; - wcscmd.cmdStatus = 4; - wcsTask.taskStatus = 4; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 4 }); + wcsTask.taskStatus = 6; _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 }); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; } - //已取货待放货 - if (agvCallbackDto.method.ToLower() == "continue") - { - - wcscmd.sendFlag = 1; - wcscmd.cmdStatus = 3; - wcsTask.taskStatus = 3; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 3 }); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 }); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; - } - //放货完成 - if (agvCallbackDto.method.ToLower() == "end") - { - if (wcsTask.nextPointId != 10) - { - wcscmd.cmdStatus = 5; - wcscmd.sendFlag = 1; - wcsTask.taskStatus = 5; - - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 5 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 }); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; - } - else - { - wcscmd.cmdStatus = 6; - wcscmd.sendFlag = 1; - wcsTask.taskStatus = 6; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 6 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; - } - - } } } else @@ -191,44 +162,29 @@ namespace Khd.Core.Application BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode); if (baseEquip != null) { - var wcsCmd = _dbContext.WcsCmd - .Where(t => t.cmdType == 32 || t.cmdType == 48) + var wcsTask = _dbContext.WcsTask + .Where(t => t.taskType == 32 || t.taskType == 48) .Where(t => t.nextPointId == baseEquip.objid || t.currPointId == baseEquip.objid) .FirstOrDefault(); - if (wcsCmd != null) + if (wcsTask != null) { - WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcsCmd.taskId); - if (wcsTask != null) + if (wcsTask.taskType != 48) { - if (wcsTask.taskType != 48) - { - wcsCmd.cmdStatus = 7; - wcsTask.taskStatus = 7; - _dbContext.WcsCmd.Update(wcsCmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); - _dbContext.SaveChanges(); - agvCompeletedResponse.code = "0"; - agvCompeletedResponse.message = "成功"; - } - else - { - wcsCmd.cmdStatus = 4; - wcsTask.taskStatus = 4; - _dbContext.WcsCmd.Update(wcsCmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); - _dbContext.SaveChanges(); - agvCompeletedResponse.code = "0"; - agvCompeletedResponse.message = "成功"; - } + wcsTask.taskStatus = 7; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); + _dbContext.SaveChanges(); + agvCompeletedResponse.code = "0"; + agvCompeletedResponse.message = "成功"; } else { - agvCompeletedResponse.code = "1"; - agvCompeletedResponse.message = "未找到当前任务"; + wcsTask.taskStatus = 4; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); + _dbContext.SaveChanges(); + agvCompeletedResponse.code = "0"; + agvCompeletedResponse.message = "成功"; } } else @@ -336,93 +292,64 @@ namespace Khd.Core.Application try { _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var wcscmd = _dbContext.WcsCmd - .Where(t => t.taskCode == agvCallbackDto.taskCode) - .FirstOrDefault(); - if (wcscmd != null) + + WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.taskCode == agvCallbackDto.taskCode); + if (wcsTask != null) { - WcsTask wcsTask = _dbContext.WcsTask.FirstOrDefault(t => t.objid == wcscmd.taskId); - if (wcsTask != null) + //start 开始 end结束 continue继续 + //待取货 + if (agvCallbackDto.method.ToLower() == "start") { - //start 开始 end结束 continue继续 - //待取货 - if (agvCallbackDto.method.ToLower() == "start") + wcsTask.taskStatus = 2; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + if (agvCallbackDto.method.ToLower() == "con") + { + wcsTask.taskStatus = 4; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } + //已取货待放货 + if (agvCallbackDto.method.ToLower() == "continue") + { + if (wcsTask.taskStatus > 3) { - wcscmd.cmdStatus = 2; - wcscmd.sendFlag = 1; - wcsTask.taskStatus = 2; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 2 }); + wcsTask.taskStatus = 5; _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 }); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; } - if (agvCallbackDto.method.ToLower() == "con") + else { - wcscmd.sendFlag = 1; - wcscmd.cmdStatus = 4; - wcsTask.taskStatus = 4; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 4 }); + wcsTask.taskStatus = 3; _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 }); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; - } - //已取货待放货 - if (agvCallbackDto.method.ToLower() == "continue") - { - if (wcscmd.cmdStatus > 3) - { - wcscmd.sendFlag = 1; - wcscmd.cmdStatus = 5; - wcsTask.taskStatus = 5; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 5 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 }); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; - } - else - { - wcscmd.sendFlag = 1; - wcscmd.cmdStatus = 3; - wcsTask.taskStatus = 3; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 3 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 }); - _dbContext.SaveChanges(); - reponseagvCallbackDto.code = "0"; - reponseagvCallbackDto.message = "成功"; - } - } - //放货完成 - if (agvCallbackDto.method.ToLower() == "end") - { - wcscmd.cmdStatus = 7; - wcscmd.sendFlag = 1; - wcsTask.taskStatus = 7; - _dbContext.WcsCmd.Update(wcscmd); - _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 7 }); - _dbContext.WcsTask.Update(wcsTask); - _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 }); _dbContext.SaveChanges(); reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.message = "成功"; } } + //放货完成 + if (agvCallbackDto.method.ToLower() == "end") + { + wcsTask.taskStatus = 7; + _dbContext.WcsTask.Update(wcsTask); + _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 }); + _dbContext.SaveChanges(); + reponseagvCallbackDto.code = "0"; + reponseagvCallbackDto.message = "成功"; + } } - else - { - reponseagvCallbackDto.code = "1"; - reponseagvCallbackDto.message = "未找到当前任务"; - } + } catch (Exception ex) { diff --git a/src/Khd.Core.Domain/Models/WcsTask.cs b/src/Khd.Core.Domain/Models/WcsTask.cs index d531f1d..781fdd6 100644 --- a/src/Khd.Core.Domain/Models/WcsTask.cs +++ b/src/Khd.Core.Domain/Models/WcsTask.cs @@ -17,7 +17,8 @@ namespace Khd.Core.Domain.Models [Table("wcs_task")] public class WcsTask { - + [Column("taskCode")] + public string taskCode { get; set; } [Column("from_floor_no")] public int? fromFloorNo { get; set; } diff --git a/src/Khd.Core.Domain/Models/WmsBaseLocation.cs b/src/Khd.Core.Domain/Models/WmsBaseLocation.cs index b798228..146cd95 100644 --- a/src/Khd.Core.Domain/Models/WmsBaseLocation.cs +++ b/src/Khd.Core.Domain/Models/WmsBaseLocation.cs @@ -96,17 +96,17 @@ namespace Khd.Core.Domain.Models [Column("qty_limit")] public decimal? qtyLimit { get; set; } - /// - /// 入库过度库位标识(1:是,0:否) - /// - [Column("instock_flag")] - public string instockFlag { get; set; } + ///// + ///// 入库过度库位标识(1:是,0:否) + ///// + //[Column("instock_flag")] + //public string instockFlag { get; set; } - /// - /// 出库过度库位标识(1:是,0:否) - /// - [Column("outstock_flag")] - public string outstockFlag { get; set; } + ///// + ///// 出库过度库位标识(1:是,0:否) + ///// + //[Column("outstock_flag")] + //public string outstockFlag { get; set; } /// /// 库位状态(1:正常,2:自动锁定,3:人工锁定,4:移库锁定,5:合库锁定 6出库锁定);在正常时,库位可以使用,如果是自动锁定则需要自动解锁变成正常,如果是人工锁定需要人工解锁变成正常 diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs index b2733df..98f67df 100644 --- a/src/Khd.Core.Plc/StaticPlcHelper.cs +++ b/src/Khd.Core.Plc/StaticPlcHelper.cs @@ -45,16 +45,15 @@ namespace Khd.Core.Plc return null; } string res = Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Replace("\\u", "").Trim(); - + if (res.Contains("JYHB")) { return res[res.IndexOf('J')..]; } - else if (res.Contains('C')) + else if(res.Contains('C')) { return res[res.IndexOf('C')..]; - } - else + }else { return ""; } diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 602471e..524ebf6 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -1,4 +1,5 @@ -using Khd.Core.EntityFramework; +using Khd.Core.Domain.Models; +using Khd.Core.EntityFramework; using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Wcs; using Masuit.Tools.Logging; @@ -40,7 +41,7 @@ namespace Khd.Core.Wcs StaticData.basePlcs = dbContext.BasePlc.ToList();//陈工Agv和设备信息推送 StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息 StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();//字典表,Agv任务模板 - + foreach (var plcConfig in StaticData.PlcConfigs) { if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index bde643b..1c239a7 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -164,7 +164,7 @@ namespace Khd.Core.Wcs.Wcs } /// - /// 3楼托盘库 + /// 3楼托盘库出库任务 /// /// private void CreateEmptyTrayLogic() @@ -252,9 +252,9 @@ namespace Khd.Core.Wcs.Wcs // } //} //else - if (baseEquip.emptyCount == SystemData.maxTray) + if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值 { - var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0); + var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);//找周转区 if (endEquip != null) { var wcsTask = new WcsTask() @@ -370,8 +370,6 @@ namespace Khd.Core.Wcs.Wcs var wmsBaseLocation = dbContext.WmsBaseLocation .Where(t => t.warehouseId == 521) .Where(t => t.activeFlag == "1") - .Where(t => t.instockFlag == "0") - .Where(t => t.outstockFlag == "0") .Where(t => t.locationStatus == "1") .Where(t => t.containerCode == null) .OrderByDescending(t => t.locColumn) @@ -422,7 +420,6 @@ namespace Khd.Core.Wcs.Wcs }; WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); wmsProductInstock.executeStatus = "1"; - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "4"; dbContext.Add(wmsProductInstockDetail); dbContext.Update(wmsProductInstock); @@ -431,6 +428,10 @@ namespace Khd.Core.Wcs.Wcs dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); } + else + { + //报警 + } } } } @@ -467,7 +468,7 @@ namespace Khd.Core.Wcs.Wcs WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.endPointId == endEquip.objid); if (wcsTask == null) { - WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault(); + WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();//调接口生成的任务 if (wcsTaskManual != null) { var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId); @@ -482,11 +483,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.activeFlag == "1") .Where(t => t.delFlag == "0") .Where(t => t.locationScrapType == "1") - .Where(t => t.instockFlag == "0") - .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 311) - .OrderByDescending(t => t.locRow) - .ThenByDescending(t => t.locColumn) .ToList(); var bill = from a in wmsBaseLocations from b in wmsRawStocks @@ -494,7 +491,7 @@ namespace Khd.Core.Wcs.Wcs select new { a, b }; WmsBaseLocation? wmsBaseLocation = null; WmsRawStock? wmsRawStock = null; - bill = bill.OrderBy(t => t.b.instockDate); + bill = bill.OrderBy(t => t.b.instockDate.Value.Date);//按某个时间段 var fistbill = bill.FirstOrDefault(); if (fistbill != null) { @@ -517,7 +514,6 @@ namespace Khd.Core.Wcs.Wcs { if (lastbill.b.instockDate != null && fistbill.b.instockDate != null) { - if (wmsBaseLocation.locDeep == 1) { int? row = 0; @@ -581,12 +577,10 @@ namespace Khd.Core.Wcs.Wcs qty = 1 }; toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; toLocation.updateBy = "WCS"; toLocation.updateTime = DateTime.Now; fromBaseLocation.updateBy = "WCS"; fromBaseLocation.updateTime = DateTime.Now; - fromBaseLocation.outstockFlag = "1"; fromBaseLocation.locationStatus = "4"; dbContext.Update(toLocation); dbContext.Update(fromBaseLocation); @@ -660,7 +654,6 @@ namespace Khd.Core.Wcs.Wcs useFlag = 1, qty = 1 }; - wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.locationStatus = "6"; dbContext.Update(wmsBaseLocation); dbContext.Add(wmsRawOutstockDetail); @@ -803,8 +796,6 @@ namespace Khd.Core.Wcs.Wcs .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") .Where(t => t.warehouseId == item.warehouseId) .Where(t => wmsproStocks.Contains(t.locationCode)) @@ -893,12 +884,10 @@ namespace Khd.Core.Wcs.Wcs qty = 1 }; toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; toLocation.updateBy = "WCS"; toLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateTime = DateTime.Now; - wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.locationStatus = "4"; dbContext.Update(toLocation); dbContext.Update(wmsBaseLocation); @@ -955,7 +944,6 @@ namespace Khd.Core.Wcs.Wcs useFlag = 1, qty = 1 }; - location.outstockFlag = "1"; location.locationStatus = "6"; location.updateBy = "WCS"; location.updateTime = DateTime.Now; @@ -1029,9 +1017,7 @@ namespace Khd.Core.Wcs.Wcs .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 => t.warehouseId == item.warehouseId) .Where(t => wmsproStocks.Contains(t.containerCode)) .ToList(); @@ -1111,9 +1097,9 @@ namespace Khd.Core.Wcs.Wcs .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 ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) .Where(t => t.warehouseId != location.locationId) @@ -1142,12 +1128,10 @@ namespace Khd.Core.Wcs.Wcs qty = 1 }; toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; toLocation.updateBy = "WCS"; toLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateTime = DateTime.Now; - wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.locationStatus = "4"; dbContext.Update(toLocation); dbContext.Update(wmsBaseLocation); @@ -1187,7 +1171,6 @@ namespace Khd.Core.Wcs.Wcs useFlag = 1, qty = 1 }; - location.outstockFlag = "1"; location.locationStatus = "6"; location.updateBy = "WCS"; location.updateTime = DateTime.Now; @@ -1287,8 +1270,8 @@ namespace Khd.Core.Wcs.Wcs // .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.ContainerStatus == "1") // .Where(t => t.warehouseId == item.warehouseId) // .Where(t => wmsRawStocks.Contains(t.locationCode)) @@ -1421,13 +1404,15 @@ namespace Khd.Core.Wcs.Wcs List canOut = orderList.Select(t => t.saleOrderId).ToList(); rawStock = rawStock.Where(t => canOut.Contains(t.saleOrderId)).OrderByDescending(t => t.saleOrderId).ToList(); //对物料和数量进行分组 - var list = orderList.GroupBy(t => t.materialId).Select(t => new + var list = orderList.GroupBy(t => new { t.materialId, t.saleOrderId }).Select(t => new { - MaterialId = t.Key, + MaterialId = t.Key.materialId, + SaleOrderId = t.Key.saleOrderId, TotalAmount = t.Sum(x => x.outstockAmount), realOutstockAmount = t.Sum(x => x.realOutstockAmount) } ).ToList(); + int? index = 1; foreach (var order in list) { if (tasks.Count >= 6) @@ -1435,7 +1420,7 @@ namespace Khd.Core.Wcs.Wcs break; } var wmsRawStocks = rawStock - .Where(t => t.materialId == order.MaterialId && t.warehouseId == 512) + .Where(t => t.materialId == order.MaterialId && t.saleOrderId == order.SaleOrderId && t.warehouseId == 512) .Select(t => t.palletInfoCode) .ToList(); var AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512).ToList(); @@ -1443,36 +1428,65 @@ namespace Khd.Core.Wcs.Wcs .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") .Where(t => t.warehouseId == 512) + .Where(t => t.ContainerStatus == "1") .Where(t => wmsRawStocks.Contains(t.containerCode)) .ToList(); - decimal? needNumber = order.TotalAmount - order.realOutstockAmount; + decimal? needNumber = order.TotalAmount - order.realOutstockAmount; + foreach (var task in tasks) + { + WmsRawStock wmsRawStock = rawStock.Where(t => t.palletInfoCode == task.containerNo).First(); + needNumber -= wmsRawStock.totalAmount - wmsRawStock.frozenAmount; + WmsBaseLocation wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locationCode == wmsRawStock.locationCode).First(); + index = wmsBaseLocation.locRow; + } + if (needNumber <= 0) + { + continue; + } var bill = from a in wmsBaseLocations from b in rawStock where a.containerCode == b.palletInfoCode select new { a, b }; //如果第一列满足需求,则按第一列排序,否则按最后一列排序 - if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() >= needNumber) + if (bill.Where(t => t.a.locRow == index).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() >= needNumber) { - bill = bill.OrderBy(t => t.a.locColumn).ToList(); + if (index == 1) + { + bill = bill.OrderBy(t => t.a.locRow).ThenBy(t => t.a.locColumn).ToList(); + index = 2; + } + else + { + bill = bill.OrderByDescending(t => t.a.locRow).ThenBy(t => t.a.locColumn).ToList(); + index = 1; + } } else { - bill = bill.OrderByDescending(t => t.a.locColumn).ToList(); + bill = bill.OrderByDescending(t => t.a.locRow).ThenBy(t => t.a.locColumn).ToList(); + if (index == 1) + { + bill = bill.OrderByDescending(t => t.a.locRow).ThenBy(t => t.a.locColumn).ToList(); + index = 2; + } + else + { + bill = bill.OrderBy(t => t.a.locRow).ThenBy(t => t.a.locColumn).ToList(); + index = 1; + } } BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11); BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20); foreach (var b in bill) { - if (needNumber <= 0) + if (needNumber <= 0 || tasks.Count >= 6) { break; } - if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6) + if (tasks.Where(t => t.containerNo == b.a.containerCode).Any())//判读当前料箱是否存在出库任务 { continue; } @@ -1518,7 +1532,6 @@ namespace Khd.Core.Wcs.Wcs qty = qty }; tasks.Add(wcsTask); - location.outstockFlag = "1"; location.locationStatus = "6"; location.updateBy = "WCS"; location.ContainerStatus = "2"; @@ -1586,7 +1599,6 @@ namespace Khd.Core.Wcs.Wcs dbContext.UpdateRange(orderList); dbContext.Update(item); } - endStationCodeEquip.endStationCode = null; dbContext.Update(endStationCodeEquip); if (tasks.Count > 0) { @@ -1597,7 +1609,7 @@ namespace Khd.Core.Wcs.Wcs } } } - if (endEquip.equipType == 12 || endEquip.equipType == 13)//原材料到柜体验收区 + if (endEquip.equipType == 12 || endEquip.equipType == 13)//原材料到柜体验收区,背板安装 { bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.useFlag == 1 && t.taskStatus <= 5).Any(); if (!hasTask) @@ -1617,25 +1629,16 @@ namespace Khd.Core.Wcs.Wcs .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") .Where(t => t.warehouseId == item.warehouseId) .Where(t => wmsRawStocks.Contains(t.containerCode)) .ToList(); decimal? needNumber = item.outstockAmount - item.realOutstockAmount; - if (needNumber <= 0) - { - item.executeStatus = "2"; - dbContext.Update(item); - dbContext.SaveChanges(); - continue; - } var bill = from a in wmsBaseLocations from b in rawStock - where a.containerCode == b.palletInfoCode + where a.locationCode == b.locationCode select new { a, b }; @@ -1720,12 +1723,10 @@ namespace Khd.Core.Wcs.Wcs qty = qty }; toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; toLocation.updateBy = "WCS"; toLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateTime = DateTime.Now; - wmsBaseLocation.outstockFlag = "1"; wmsBaseLocation.locationStatus = "4"; dbContext.Update(toLocation); dbContext.Update(wmsBaseLocation); @@ -1786,8 +1787,11 @@ namespace Khd.Core.Wcs.Wcs outstockWay = "2", materialProductionDate = mesBaseBarcodeInfo.productionDate }; + if (item.beginTime == null) + { + item.beginTime = DateTime.Now; + } dbContext.Add(wmsProductOutstockDetail); - location.outstockFlag = "1"; location.locationStatus = "6"; location.updateBy = "WCS"; location.updateTime = DateTime.Now; @@ -1795,15 +1799,11 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(endEquip); dbContext.Update(location); dbContext.Add(wcsTask); + dbContext.Update(item); dbContext.Update(stock); dbContext.SaveChanges(); } - if (item.beginTime == null) - { - item.beginTime = DateTime.Now; - } - dbContext.Update(item); - dbContext.SaveChanges(); + break; } } diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index fa22d9c..693c388 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -289,6 +289,7 @@ namespace Khd.Core.Wcs.Wcs /// private void FirstFloorLine() { + List BigContainerCodes = new() { "JYHB01020001", "JYHB01020002", "JYHB01020003", "JYHB01020004" }; List Outtpyes = new() { 2, 4, 8, 6 }; using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); @@ -306,133 +307,163 @@ namespace Khd.Core.Wcs.Wcs BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 1); if (Convert.ToInt32(linesignal01Value) == 1) { - //判断task表里没有该rfid的未完成的入库 - //信息,未下发去向 - var task = dbContext.WcsTask.Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault(); - if (task == null) + { - //根据托盘号获取物料码 - var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault(); - WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault(); - - if (material != null) + //判断task表里没有该rfid的未完成的入库 + //信息,未下发去向 + var task = dbContext.WcsTask.Where(t => t.nextPointId == 1).OrderBy(t => t.createTime).FirstOrDefault(); + if (task == null) { - if (taskLog != null) + if (BigContainerCodes.Contains(RFID001Value)) { - if (taskLog.materialBarcode == material.materialBarcode) + var newTask = new WcsTask() { - if (baseEquip.containerNo == "0") - { - baseEquip.containerNo = null; - dbContext.Update(baseEquip); - dbContext.SaveChanges(); - LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功"); - } - else if (baseEquip.containerNo != RFID001Value) - { - baseEquip.containerNo = RFID001Value; - dbContext.Update(baseEquip); - dbContext.SaveChanges(); - LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); - Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); - Thread.Sleep(3000); - continue; - } - else - { - Thread.Sleep(3000); - continue; - } - } + objid = StaticData.SnowId.NextId(), + serialNo = SystemData.GetSerialNo(dbContext), + equipmentNo = "F01", + taskType = 5, + taskStatus = 0, + containerNo = RFID001Value, + currPointId = F01, + currPointNo = "TSJ_01", + nextPointId = T01, + nextPointNo = "TSJ_01", + fromFloorNo = 1, + floorNo = 4, + useFlag = 1, + createBy = "一楼接驳位", + createTime = DateTime.Now, + remark = "一楼创建入库任务" + }; + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(wcsTaskLog); + dbContext.Add(newTask); + dbContext.SaveChanges(); } - - var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId; - if (warehouseId != null) + else { - var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault(); - if (TargetFloor != null) - { - //插入task表 + //根据托盘号获取物料码 + var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault(); + WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault(); - var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault(); - if (dic != null) + if (material != null) + { + if (taskLog != null) { - var newTask = new WcsTask() + if (taskLog.materialBarcode == material.materialBarcode) { - objid = StaticData.SnowId.NextId(), - serialNo = SystemData.GetSerialNo(dbContext), - equipmentNo = "F01", - taskType = Convert.ToInt32(dic.dicValue), - taskStatus = 0, - containerNo = RFID001Value, - materialBarcode = material.materialBarcode, - materialId = material.materialId, - qty = Convert.ToInt32(material.bindAmount), - currPointId = F01, - currPointNo = "TSJ_01", - nextPointId = T01, - nextPointNo = "TSJ_01", - endPointId = warehouseId, - fromFloorNo = 1, - floorNo = TargetFloor.warehouseFloor, - useFlag = 1, - createBy = "一楼接驳位", - createTime = DateTime.Now, - remark = "一楼创建入库任务" - }; - WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); - dbContext.Add(wcsTaskLog); - dbContext.Add(newTask); - dbContext.SaveChanges(); + if (baseEquip.containerNo == "0") + { + baseEquip.containerNo = null; + dbContext.Update(baseEquip); + dbContext.SaveChanges(); + LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功"); + } + else if (baseEquip.containerNo != RFID001Value) + { + baseEquip.containerNo = RFID001Value; + dbContext.Update(baseEquip); + dbContext.SaveChanges(); + LogManager.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); + Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); + Thread.Sleep(3000); + continue; + } + else + { + Thread.Sleep(3000); + continue; + } + } } - } - } - } - } - else - { - if (string.IsNullOrEmpty(task.containerNo))//人工调出 - { - if (task.useFlag == 1) - { - if (task.qty > 1)//多个托盘 - { - if (task.endPointId != 1) + + var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId; + if (warehouseId != null) { - task.nextPointId = 6; - dbContext.SaveChanges(); - } - } - else if (task.qty == 1) - { - if (task.endPointId != 1) - { - task.nextPointId = 6; - task.containerNo = RFID001Value; - dbContext.SaveChanges(); + var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault(); + if (TargetFloor != null) + { + //插入task表 + + var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault(); + if (dic != null) + { + var newTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + serialNo = SystemData.GetSerialNo(dbContext), + equipmentNo = "F01", + taskType = Convert.ToInt32(dic.dicValue), + taskStatus = 0, + containerNo = RFID001Value, + materialBarcode = material.materialBarcode, + materialId = material.materialId, + qty = Convert.ToInt32(material.bindAmount), + currPointId = F01, + currPointNo = "TSJ_01", + nextPointId = T01, + nextPointNo = "TSJ_01", + endPointId = warehouseId, + fromFloorNo = 1, + floorNo = TargetFloor.warehouseFloor, + useFlag = 1, + createBy = "一楼接驳位", + createTime = DateTime.Now, + remark = "一楼创建入库任务" + }; + WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); + dbContext.Add(wcsTaskLog); + dbContext.Add(newTask); + dbContext.SaveChanges(); + } + } } } } } else { - MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == RFID001Value); - if (mesBasePalletInfo != null) + if (string.IsNullOrEmpty(task.containerNo))//人工调出 { - mesBasePalletInfo.bindAmount = null; - mesBasePalletInfo.createBy = null; - mesBasePalletInfo.bindAmount = null; - mesBasePalletInfo.createTime = null; - mesBasePalletInfo.materialBarcode = null; - mesBasePalletInfo.materialCode = null; - mesBasePalletInfo.materialId = null; - mesBasePalletInfo.materialName = null; - mesBasePalletInfo.updateBy = "WCS"; - mesBasePalletInfo.updateTime = DateTime.Now; - dbContext.Update(mesBasePalletInfo); - dbContext.Remove(task); - dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); - dbContext.SaveChanges(); + if (task.useFlag == 1) + { + if (task.qty > 1)//多个托盘 + { + if (task.endPointId != 1) + { + task.nextPointId = 6; + dbContext.SaveChanges(); + } + } + else if (task.qty == 1) + { + if (task.endPointId != 1) + { + task.nextPointId = 6; + task.containerNo = RFID001Value; + dbContext.SaveChanges(); + } + } + } + } + else + { + MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == RFID001Value); + if (mesBasePalletInfo != null) + { + mesBasePalletInfo.bindAmount = null; + mesBasePalletInfo.bindAmount = null; + mesBasePalletInfo.materialBarcode = null; + mesBasePalletInfo.materialCode = null; + mesBasePalletInfo.materialId = null; + mesBasePalletInfo.materialName = null; + mesBasePalletInfo.updateBy = "WCS"; + mesBasePalletInfo.updateTime = DateTime.Now; + dbContext.Update(mesBasePalletInfo); + dbContext.Remove(task); + dbContext.WcsTaskLog.Where(t => t.objid == task.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); + dbContext.SaveChanges(); + } } } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 4520082..45629ec 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -6,9 +6,11 @@ using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; using Masuit.Tools; using Masuit.Tools.Logging; +using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Newtonsoft.Json; +using System.Transactions; using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs @@ -82,34 +84,19 @@ namespace Khd.Core.Wcs.Wcs } 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(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=nextEquip.agvPositionCode, type="00" } }, @@ -123,17 +110,13 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wmsBaseLocation.agvPositionCode + "," + nextEquip.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -147,34 +130,19 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 30); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - 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 = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - }; RequestAGVTaskDto agvTask = new() { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode= endEquip.agvPositionCode, type="00" } }, @@ -187,15 +155,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wmsBaseLocation.agvPositionCode + "," + endEquip.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -207,34 +171,19 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); BaseEquip currentEquip = StaticData.BaseEquip.First(t => t.objid == 30); - 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 = currentEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = wmsBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=currentEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" } }, @@ -247,15 +196,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + currentEquip.agvPositionCode + "," + wmsBaseLocation.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -267,34 +212,19 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); BaseEquip currentEquip = StaticData.BaseEquip.First(t => t.objid == 29); - 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 = 29, - nextPointNo = currentEquip.agvPositionCode, - }; RequestAGVTaskDto agvTask = new() { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=currentEquip.agvPositionCode, type="00" } }, @@ -307,15 +237,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wmsBaseLocation.agvPositionCode + "," + currentEquip.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -327,34 +253,19 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip currentEquip = StaticData.BaseEquip.First(t => t.objid == 29); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - 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 = currentEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = wmsBaseLocation.agvPositionCode, - }; RequestAGVTaskDto agvTask = new() { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new() { - positionCode = wcsCmd.currPointNo, + positionCode = currentEquip.agvPositionCode, type = "00" }, new() { - positionCode = wcsCmd.nextPointNo, + positionCode = wmsBaseLocation.agvPositionCode, type = "00" } }, @@ -368,15 +279,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + currentEquip.agvPositionCode + "," + wmsBaseLocation.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -388,34 +295,19 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 5); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - 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 = item.endPointId, - nextPointNo = wmsBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode= startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" } }, @@ -428,15 +320,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + startEquip.agvPositionCode + "," + wmsBaseLocation.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -448,34 +336,19 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - 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 = fromBaseLocation.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = toBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=fromBaseLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=toBaseLocation.agvPositionCode, type="00" } }, @@ -488,15 +361,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼Agv下发任务成功:" + fromBaseLocation.agvPositionCode + "," + toBaseLocation.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -507,10 +376,8 @@ namespace Khd.Core.Wcs.Wcs } else { - WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); - if (wcsCmd != null) { - if (wcsCmd.cmdStatus == 3) + if (item.taskStatus == 3) { if (item.currPointId == 5) { @@ -535,7 +402,7 @@ namespace Khd.Core.Wcs.Wcs var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.taskCode }; string message = JsonConvert.SerializeObject(agvTask); string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message); @@ -543,25 +410,23 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.message == "成功") { LogManager.Info("五楼Agv下发继续任务成功:" + message); - Console.WriteLine(DateTime.Now + ":五楼Agv继续任务:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.cmdStatus = 4; + Console.WriteLine(DateTime.Now + ":五楼Agv继续任务:" + item.currPointNo + "," + item.endPointNo); item.taskStatus = 4; - dbContext.Update(wcsCmd); dbContext.Update(item); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); dbContext.SaveChanges(); } } - else if (wcsCmd.cmdStatus == 5) + else if (item.taskStatus == 5) { - Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - LogManager.Info("五楼Agv完成任务成功:" + wcsCmd.ToJsonString()); + Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + item.currPointNo + "," + item.endPointNo); + LogManager.Info("五楼Agv完成任务成功:" + item.ToJsonString()); if (item.taskType == 66)//移库 { + using var dbContextTransaction = dbContext.Database.BeginTransaction(); try { - var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); + var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault(); if (wmsRawStock != null) { wmsRawStock.locationCode = item.endPointNo; @@ -578,38 +443,36 @@ namespace Khd.Core.Wcs.Wcs } 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 }); dbContext.SaveChanges(); + dbContextTransaction.Commit(); } catch (Exception ex) { + dbContextTransaction.Rollback(); LogManager.Error(ex); } } else if (item.taskType == 38)//出库 { - var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId); - var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t => t.executeStatus == "1" && t.locationCode == item.currPointNo); + var wmsProductOutstockDetail = dbContext.WmsProductOutstockDetail.FirstOrDefault(t => t.productOutstockId == item.orderId&&t.executeStatus == "1" && t.locationCode == item.currPointNo); var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId); if (wmsProductOutstockDetail != null && wmsProductOutstock != null) { wmsProductOutstockDetail.executeStatus = "2"; dbContext.Update(wmsProductOutstockDetail); + wmsProductOutstock.outstockQty += 1; if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) { wmsProductOutstock.endTime = DateTime.Now; @@ -617,7 +480,6 @@ namespace Khd.Core.Wcs.Wcs } WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5); - wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = null; wmsBaseLocation.updateTime = DateTime.Now; @@ -637,10 +499,8 @@ namespace Khd.Core.Wcs.Wcs dbContext.Add(newTask); WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(wcsTaskLog); - dbContext.WcsCmd.Remove(wcsCmd); dbContext.SaveChanges(); 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 }); } } else if (item.taskType == 33)//原材料到背板安装 @@ -655,19 +515,16 @@ namespace Khd.Core.Wcs.Wcs wmsRawOutstock.executeStatus = "2"; WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.outstockFlag = "0"; - wmsBaseLocation.containerCode = ""; + wmsBaseLocation.containerCode = null; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; dbContext.Update(wmsRawOutstock); dbContext.Update(wmsRawOutstockDetail); dbContext.Update(wmsBaseLocation); dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete(); - dbContext.WcsCmd.Remove(wcsCmd); dbContext.WcsTask.Remove(item); dbContext.SaveChanges(); 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 }); } } } @@ -675,7 +532,6 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.instockFlag = "0"; wmsBaseLocation.containerCode = item.containerNo; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; @@ -722,10 +578,8 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(startEquip); dbContext.Add(wmsProductStock); dbContext.Update(wmsBaseLocation); - dbContext.WcsCmd.Remove(wcsCmd); dbContext.WcsTask.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(); } @@ -742,8 +596,6 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsRawOutStock); dbContext.Update(wmsRawOutstockDetail); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - wmsBaseLocation.outstockFlag = "0"; - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; wmsBaseLocation.containerCode = null; wmsBaseLocation.updateTime = DateTime.Now; @@ -773,7 +625,6 @@ namespace Khd.Core.Wcs.Wcs .FirstOrDefault(); if (deepWmsLocation != null) { - deepWmsLocation.instockFlag = "1"; deepWmsLocation.locationStatus = "2"; dbContext.Update(deepWmsLocation); } @@ -791,23 +642,18 @@ namespace Khd.Core.Wcs.Wcs newTask.taskStatus = 0; newTask.useFlag = 0; dbContext.Remove(item); - dbContext.Remove(wcsCmd); WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); dbContext.Add(newTask); dbContext.Add(wcsTaskLog); dbContext.SaveChanges(); 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 }); } } - - } else if (item.taskType == 28)//柜体拆分到原材料 { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.instockFlag = "0"; wmsBaseLocation.containerCode = item.containerNo; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; @@ -840,22 +686,18 @@ namespace Khd.Core.Wcs.Wcs .FirstOrDefault(); if (deepWmsLocation != null) { - deepWmsLocation.instockFlag = "0"; deepWmsLocation.locationStatus = "1"; dbContext.Update(deepWmsLocation); } } dbContext.Remove(item); - dbContext.Remove(wcsCmd); dbContext.SaveChanges(); 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 }); } } else if (item.taskType == 47) { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - wmsBaseLocation.instockFlag = "0"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = item.containerNo; var mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo); @@ -895,9 +737,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.Add(wmsRawStock); dbContext.Update(wmsBaseLocation); dbContext.Remove(item); - dbContext.Remove(wcsCmd); dbContext.SaveChanges(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs index f4c2db5..624970f 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs @@ -63,21 +63,6 @@ namespace Khd.Core.Wcs.Wcs BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); BaseDictionary baseDictionary = dbContext.BaseDictionary.First(t => t.objid == item.taskType); - 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 = startEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = endEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), @@ -85,12 +70,12 @@ namespace Khd.Core.Wcs.Wcs { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startEquip.agvPositionCode, type=baseDictionary.agvType }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type=baseDictionary.agvType } }, @@ -103,15 +88,11 @@ namespace Khd.Core.Wcs.Wcs if (reponseMessage != null && reponseMessage.code == "0") { LogManager.Info("五楼背负式AGV线程下发任务" + agvTask.ToJsonString()); - Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程下发任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程下发任务" + startEquip.agvPositionCode + "," + endEquip.agvPositionCode); + item.taskCode = reponseMessage.data; 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 @@ -121,42 +102,37 @@ namespace Khd.Core.Wcs.Wcs } else { - if (item.useFlag == 1)//接料位-工位默认为1,工位到接料位需Mes通知 + //if (item.useFlag == 1)//接料位-工位默认为1,工位到接料位需Mes通知 { - WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); - if (wcsCmd != null) { - if (wcsCmd.cmdStatus == 4) + if (item.taskStatus == 4)//通知捡料完成 { var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.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 == "成功") { - LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid); - Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid); + LogManager.Info("五楼背负式AGV线程完成任务" + item.objid); + Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + item.currPointNo + "," + item.endPointNo); item.taskStatus = 5; - wcsCmd.cmdStatus = 5; dbContext.Update(item); - dbContext.Update(wcsCmd); dbContext.SaveChanges(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 }); } } - else if (wcsCmd.cmdStatus == 7) + else if (item.taskStatus == 7)//通知拿料完成 { - LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid); - Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid); + LogManager.Info("五楼背负式AGV线程完成任务" + item.objid); + Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + item.currPointNo + "," + item.endPointNo); var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.taskCode }; string message = JsonConvert.SerializeObject(agvTask); string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message); @@ -172,10 +148,8 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsRawReturn); } } - dbContext.Remove(wcsCmd); dbContext.Remove(item); dbContext.SaveChanges(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 }); } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs index cb483e5..8b6b939 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs @@ -138,7 +138,6 @@ namespace Khd.Core.Wcs.Wcs createBy = FloorNo + "楼CTU", createTime = DateTime.Now, }; - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; wmsBaseLocation.updateTime = DateTime.Now; dbContext.Update(wmsBaseLocation); @@ -180,7 +179,6 @@ namespace Khd.Core.Wcs.Wcs createBy = FloorNo + "楼CTU", createTime = DateTime.Now, }; - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; wmsBaseLocation.updateTime = DateTime.Now; dbContext.Update(wmsBaseLocation); @@ -220,7 +218,6 @@ namespace Khd.Core.Wcs.Wcs createBy = FloorNo + "楼CTU", createTime = DateTime.Now, }; - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; wmsBaseLocation.updateTime = DateTime.Now; dbContext.Update(wmsBaseLocation); @@ -393,22 +390,6 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - var 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 + "楼CTU", - currPointId = wmsBaseLocation.locationId, - currPointNo = wmsBaseLocation.agvPositionCode, - nextPointId = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - taskCode = null - }; var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), @@ -416,12 +397,12 @@ namespace Khd.Core.Wcs.Wcs { new() { - positionCode = wcsCmd.currPointNo, + positionCode =wmsBaseLocation.agvPositionCode, type = "05"//05库位 }, new() { - positionCode = wcsCmd.nextPointNo, + positionCode = endEquip.agvPositionCode, type = "00"//设备 }, }, @@ -433,14 +414,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.code == "0") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("五楼CTU线程开始任务" + item.objid); + Console.WriteLine(DateTime.Now + ":五楼CTU线程开始任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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.WcsCmd.Add(wcsCmd); dbContext.SaveChanges(); } else @@ -455,22 +434,6 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - var 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 + "楼CTU", - nextPointId = wmsBaseLocation.locationId, - nextPointNo = wmsBaseLocation.agvPositionCode, - currPointId = startEquip.objid, - currPointNo = startEquip.agvPositionCode, - }; - var agvTask = new { reqCode = StaticData.SnowId.NextId().ToString(), @@ -478,12 +441,12 @@ namespace Khd.Core.Wcs.Wcs { new() { - positionCode = wcsCmd.currPointNo, + positionCode = wmsBaseLocation.agvPositionCode, type = "05"//设备 }, new() { - positionCode = wcsCmd.nextPointNo, + positionCode = startEquip.agvPositionCode, type = "05"//库位 }, }, @@ -495,14 +458,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.code == "0") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("五楼CTU线程开始任务" + item.objid); + Console.WriteLine(DateTime.Now + ":五楼CTU线程开始任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; item.taskStatus = 1; dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); - WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd); - dbContext.Add(wcsCmdLog); dbContext.Update(item); - dbContext.Add(wcsCmd); int ctuTaskCount = dbContext.WcsTask.Where(t => t.taskType == 29).Count(); lock (SystemData.outStockLock) { @@ -513,7 +474,6 @@ namespace Khd.Core.Wcs.Wcs wcsOutstockLock.qty = 0; wcsOutstockLock.boxStatus = 0; dbContext.Update(wcsOutstockLock); - //isWait = false; } } dbContext.SaveChanges(); @@ -528,22 +488,6 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - var 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 + "楼CTU", - currPointId = wmsBaseLocation.locationId, - currPointNo = wmsBaseLocation.agvPositionCode, - nextPointId = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - taskCode = null - }; var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), @@ -551,12 +495,12 @@ namespace Khd.Core.Wcs.Wcs { new() { - positionCode = wcsCmd.currPointNo, + positionCode =wmsBaseLocation.agvPositionCode, type = "05" }, new() { - positionCode = wcsCmd.nextPointNo, + positionCode =endEquip.agvPositionCode, type = "00" }, }, @@ -568,14 +512,10 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.code == "0") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + item.taskCode = reponseMessage.data; 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.WcsCmd.Add(wcsCmd); dbContext.SaveChanges(); } else @@ -586,10 +526,8 @@ namespace Khd.Core.Wcs.Wcs } else { - WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); - if (wcsCmd != null) { - if (wcsCmd.cmdStatus == 3) + if (item.taskStatus == 3) { if (item.taskType == 30 || item.taskType == 100) { @@ -599,7 +537,7 @@ namespace Khd.Core.Wcs.Wcs var agvTask = new { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode, + taskCode = item.taskCode, type = 2 }; string message = JsonConvert.SerializeObject(agvTask); @@ -609,11 +547,8 @@ namespace Khd.Core.Wcs.Wcs { LogManager.Info("五楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); Console.WriteLine(DateTime.Now + ":五楼CTU线程继续任务" + item.currPointId + "," + item.endPointNo); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); - dbContext.SaveChanges(); } else { @@ -626,7 +561,7 @@ namespace Khd.Core.Wcs.Wcs var agvTask = new { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode, + taskCode = item.taskCode, type = 1 }; string message = JsonConvert.SerializeObject(agvTask); @@ -636,8 +571,6 @@ namespace Khd.Core.Wcs.Wcs { LogManager.Info("五楼CTU线程下发任务" + agvTask.ToJsonString() + "\n" + message); Console.WriteLine(DateTime.Now + ":五楼CTU线程下发任务" + item.currPointId + "," + item.endPointNo); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); dbContext.SaveChanges(); @@ -648,10 +581,10 @@ namespace Khd.Core.Wcs.Wcs } } } - else if (wcsCmd.cmdStatus == 5) + else if (item.taskStatus == 5) { - LogManager.Info("五楼CTU线程完成任务" + wcsCmd.objid); - Console.WriteLine(DateTime.Now + ":五楼CTU线程完成任务" + wcsCmd.objid); + LogManager.Info("五楼CTU线程完成任务" + item.objid); + Console.WriteLine(DateTime.Now + ":五楼CTU线程完成任务" + item.currPointNo + "," + item.endPointNo); if (item.taskType == 30)//出库任务 { WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString()); @@ -664,16 +597,13 @@ namespace Khd.Core.Wcs.Wcs WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5); - wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.locationStatus = "2"; + wmsBaseLocation.ContainerStatus = "2"; dbContext.Update(wmsBaseLocation); - dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" }); - dbContext.Remove(wcsCmd); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); dbContext.SaveChanges(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); - dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" }); + 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 }); int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count(); if (wcsTaskCount == 0) { @@ -684,16 +614,12 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.endPointId && t.warehouseFloor == 5); - wmsBaseLocation.instockFlag = "0"; - wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.ContainerStatus = "1"; dbContext.Update(wmsBaseLocation); - dbContext.Remove(wcsCmd); dbContext.Remove(item); dbContext.SaveChanges(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); - dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); lock (SystemData.outStockLock) { WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First(); @@ -707,15 +633,12 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5); - wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.locationStatus = "2"; + wmsBaseLocation.ContainerStatus = "2"; dbContext.Update(wmsBaseLocation); - dbContext.Remove(wcsCmd); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); dbContext.SaveChanges(); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); - dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); int wcsTaskCount = dbContext.WcsTask.Where(t => (t.taskType == 30 || t.taskType == 100) && t.taskStatus != 6).Count(); if (wcsTaskCount == 0) { diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index b3182bd..9b58004 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -64,7 +64,7 @@ namespace Khd.Core.Wcs.Wcs continue; } //正常读到输送线信息 有到位信号,并且有托盘,获取条码信息 - if (Convert.ToInt32(isSignal) == 1) + if (Convert.ToInt32(isSignal) == 1)//五楼接驳位 { //获取条码信息 BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo); @@ -78,8 +78,6 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.activeFlag == "1") .Where(t => t.delFlag == "0") .Where(t => t.locationScrapType == "1") - .Where(t => t.instockFlag == "0") - .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 511) .Where(t => t.locationStatus == "1") .ToList(); @@ -103,8 +101,6 @@ namespace Khd.Core.Wcs.Wcs && b.locRow == (a.b.locRow % 2 == 0 ? a.b.locRow + 1 : a.b.locRow - 1) && a.b.locColumn == b.locColumn && b.locationStatus == "1" - && b.outstockFlag == "0" - && b.instockFlag == "0" && string.IsNullOrEmpty(b.containerCode) select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 @@ -114,7 +110,7 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 //深浅库位问题?库位入库优先级等 - var AgvEquip = StaticData.BaseEquip.First(t => t.objid == 28);// + var AgvEquip = StaticData.BaseEquip.First(t => t.objid == 28);//5楼叉车 if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null) { WcsTask newTask = CoreMapper.Map(wcsTask); @@ -129,7 +125,7 @@ namespace Khd.Core.Wcs.Wcs newTask.objid = StaticData.SnowId.NextId(); newTask.createTime = DateTime.Now; newTask.taskType = 47; - if (newTask.fromFloorNo != 1) + if (newTask.fromFloorNo != 1)//如果不是一楼来的,需要通过接口确认入库(质检通过后,点击继续入库) { newTask.useFlag = 0; } @@ -137,7 +133,6 @@ namespace Khd.Core.Wcs.Wcs { newTask.useFlag = 1; } - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; dbContext.Update(wmsBaseLocation); dbContext.Remove(wcsTask); @@ -157,35 +152,35 @@ namespace Khd.Core.Wcs.Wcs } else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态 { - int? floor = 1; - var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId); - if (wmsProductOutstock != null) - { - var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsProductOutstock.endStationCode); - if (endEquip != null) - { - floor = endEquip.floorNo; - } - } - else - { - var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTask.orderId); - if (wmsRawOutstock != null) - { - var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode); - if (endEquip != null) - { - floor = endEquip.floorNo; - } - } - } - if (floor == 0) - { - Console.WriteLine($"{DateTime.Now}:5楼接驳位未找到目的地楼层"); - LogManager.Info("5楼接驳位未找到目的地楼层"); - Thread.Sleep(1000); - continue; - } + //int? floor = 1; + //var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId); + //if (wmsProductOutstock != null) + //{ + // var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsProductOutstock.endStationCode); + // if (endEquip != null) + // { + // floor = endEquip.floorNo; + // } + //} + //else + //{ + // var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTask.orderId); + // if (wmsRawOutstock != null) + // { + // var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode); + // if (endEquip != null) + // { + // floor = endEquip.floorNo; + // } + // } + //} + //if (floor == 0) + //{ + // Console.WriteLine($"{DateTime.Now}:5楼接驳位未找到目的地楼层"); + // LogManager.Info("5楼接驳位未找到目的地楼层"); + // Thread.Sleep(1000); + // continue; + //} BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机 dbContext.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); @@ -197,7 +192,7 @@ namespace Khd.Core.Wcs.Wcs newTask.currPointNo = baseEquip.equipNo; newTask.fromFloorNo = FloorNo; newTask.taskType = 6;//成品出库 - newTask.floorNo = floor;//出库楼层 + newTask.floorNo = 1;//出库楼层 newTask.taskStatus = 0; newTask.createTime = DateTime.Now; dbContext.Add(newTask); diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index b7c655e..a3aff6e 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -66,34 +66,19 @@ namespace Khd.Core.Wcs.Wcs BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType); if (item.taskType == 51)//输送线-小包入口 { - 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 = lineEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = inEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode= lineEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=inEquip.agvPositionCode, type="00" } }, @@ -106,15 +91,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -125,34 +106,19 @@ namespace Khd.Core.Wcs.Wcs else if (item.taskType == 56)//废料工位-库位 { var endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); - 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 = wasteEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = endEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=wasteEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode= endEquip.agvPositionCode, type="00" } }, @@ -166,15 +132,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -186,34 +148,19 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); - 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 = item.endPointId, - nextPointNo = wmsBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" } }, @@ -226,15 +173,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -245,34 +188,19 @@ namespace Khd.Core.Wcs.Wcs else if (item.taskType == 57)//周转位-小包入口 { var startPoint = StaticData.BaseEquip.First(t => t.objid == item.currPointId); - 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(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startPoint.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=lineEquip.agvPositionCode, type="00" } }, @@ -285,15 +213,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -307,34 +231,19 @@ namespace Khd.Core.Wcs.Wcs lineEquip = dbContext.BaseEquip.First(t => t.objid == 2); if (lineEquip.equipStatus == 0) { - 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 = lineEquip.objid, - nextPointNo = lineEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startPoint.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode= lineEquip.agvPositionCode, type="00" } }, @@ -346,18 +255,14 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - LogManager.Info("二楼AGV线程下发任务" + wcsCmd.ToJsonString() + "\n" + message); - Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointId + "," + item.endPointNo); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -370,34 +275,19 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation fromWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation toWmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - 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 = fromWmsBaseLocation.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = toWmsBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new() { - positionCode = wcsCmd.currPointNo, + positionCode = fromWmsBaseLocation.agvPositionCode, type = "00" }, new() { - positionCode = wcsCmd.nextPointNo, + positionCode = toWmsBaseLocation.agvPositionCode, type = "00" } @@ -411,15 +301,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -429,34 +315,19 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 53)//提升机-废料工位 { - 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 = lineEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = wasteEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=lineEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=wasteEquip.agvPositionCode, type="00" } }, @@ -469,15 +340,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -490,34 +357,19 @@ namespace Khd.Core.Wcs.Wcs var wasteEquipLocation = StaticData.BaseEquip.FirstOrDefault(t => t.objid == item.currPointId); if (wasteEquipLocation != null) { - 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 = wasteEquipLocation.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = wasteEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=wasteEquipLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=wasteEquip.agvPositionCode, type="00" } }, @@ -530,15 +382,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -550,34 +398,19 @@ namespace Khd.Core.Wcs.Wcs else if (item.taskType == 58)//提升机到周转位 { var endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); - 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 = lineEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = endEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=lineEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type="00" } }, @@ -590,15 +423,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -610,34 +439,20 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); - 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 = startEquip.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = endEquip.agvPositionCode, - }; + var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type="00" } }, @@ -650,15 +465,11 @@ namespace Khd.Core.Wcs.Wcs 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; + Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -669,13 +480,11 @@ namespace Khd.Core.Wcs.Wcs } else { - WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); - if (wcsCmd != null) { LogManager.Info("二楼AGV线程完成任务" + item.objid); - if (wcsCmd.cmdStatus == 3) + if (item.taskStatus == 3) { - if (wcsCmd.currPointId == lineEquip.objid) + if (item.currPointId == lineEquip.objid) { var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress); var rfid = StaticData.PlcDic[0].ReadRFID(StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID002").plcpointAddress); @@ -684,65 +493,53 @@ namespace Khd.Core.Wcs.Wcs var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.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 = 4; - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.Update(wcsCmd); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); - dbContext.SaveChanges(); } } } - else if (wcsCmd.currPointId == wasteEquip.objid) + else if (item.currPointId == wasteEquip.objid) { if (true) { var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.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 = 4; - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.Update(wcsCmd); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); - dbContext.SaveChanges(); } } } - else if (wcsCmd.currPointId == outEquip.objid) + else if (item.currPointId == outEquip.objid) { if (true) { var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.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 = 4; - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.Update(wcsCmd); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); - dbContext.SaveChanges(); } } } @@ -751,24 +548,19 @@ namespace Khd.Core.Wcs.Wcs var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.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 = 4; - item.taskStatus = 4; - dbContext.Update(wcsCmd); - dbContext.Update(item); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); - dbContext.SaveChanges(); } } } - else if (wcsCmd.cmdStatus == 5) + else if (item.taskStatus == 5) { if (item.taskType == 51) { @@ -777,20 +569,15 @@ namespace Khd.Core.Wcs.Wcs var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + taskCode = item.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(); } } } @@ -818,7 +605,6 @@ namespace Khd.Core.Wcs.Wcs if (mesBaseBarcodeInfo != null) { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - wmsBaseLocation.instockFlag = "0"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = item.containerNo; WmsProductStock wmsProductStock = new WmsProductStock() @@ -854,9 +640,7 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsBaseLocation); //dbContext.Update(wmsProductInstock); 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(); } // } @@ -881,7 +665,6 @@ namespace Khd.Core.Wcs.Wcs } wmsProductOutstockDetail.executeStatus = "2"; wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.containerCode = null; item.nextPointId = 2; item.taskStatus = 8; @@ -890,27 +673,23 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsProductOutstockDetail); dbContext.Update(wmsProductOutstock); 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 }); dbContext.SaveChanges(); } } } - else if (item.taskType == 58) + else if (item.taskType == 58)//空托盘入周转位 { BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); endEquip.equipStatus = 1; endEquip.emptyCount = item.qty; dbContext.Update(endEquip); 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 == 53) + else if (item.taskType == 53)//提升机到废料口 { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); startEquip.equipStatus = 0; @@ -921,23 +700,19 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(endEquip); dbContext.Update(startEquip); 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 == 51) + else if (item.taskType == 51)//输送线到小包入口 { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); startEquip.equipStatus = 0; dbContext.Update(startEquip); 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 == 54) + else if (item.taskType == 54)//周转位到废料口 { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); startEquip.equipStatus = 0; @@ -950,49 +725,34 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(startEquip); dbContext.Update(endEquip); 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 == 55) + else if (item.taskType == 55)//移库 { using var transaction = dbContext.Database.BeginTransaction(); try { - var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); - if (wmsRawStock != null) + var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo); + if (wmsProductStock != null) { - 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); - } + wmsProductStock.locationCode = item.endPointNo; + 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(); } @@ -1002,7 +762,7 @@ namespace Khd.Core.Wcs.Wcs LogManager.Error(ex); } } - else if (item.taskType == 56) + else if (item.taskType == 56)//废料区到周转区 { wasteEquip.emptyCount = 0; wasteEquip.equipStatus = 0; @@ -1012,26 +772,23 @@ namespace Khd.Core.Wcs.Wcs endEquip.containerNo = item.containerNo; dbContext.Remove(item); dbContext.Update(wasteEquip); - 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 == 57) + else if (item.taskType == 57)//周转位-提升机 { BaseEquip emptyEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); emptyEquip.emptyCount = 0; emptyEquip.equipStatus = 0; emptyEquip.containerNo = null; + item.nextPointId = 2; item.taskStatus = 8; dbContext.Update(item); dbContext.Update(emptyEquip); - dbContext.Remove(wcsCmd); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); - dbContext.WcsCmdLog.Where(t => t.objid == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); dbContext.SaveChanges(); } - else if (item.taskType == 59) + else if (item.taskType == 59)//周转区-小包入口 { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); startEquip.equipStatus = 0; @@ -1039,9 +796,7 @@ namespace Khd.Core.Wcs.Wcs startEquip.containerNo = null; dbContext.Update(startEquip); 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(); } } diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs index 74ccd06..19f8327 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs @@ -1,4 +1,5 @@ -using Khd.Core.Domain.Models; +using Azure.Identity; +using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; using Khd.Core.Plc.S7; @@ -11,7 +12,7 @@ using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs { /// - /// 二楼码垛输送线调度 + /// 二楼小包出入口 /// public class SecondFloorLine { @@ -49,27 +50,28 @@ namespace Khd.Core.Wcs.Wcs try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var agvGetValue = StaticData.PlcDic[2].Read(agvGetPoint.plcpointAddress); - var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress); - var rfidValue = StaticData.PlcDic[2].ReadRFID(rfidPoint.plcpointAddress); - if (agvGetValue != null && agvPutValue != null && rfidValue != null) + var agvPutValue = StaticData.PlcDic[2].Read(agvPutPoint.plcpointAddress);//小包入口叫料 + var agvGetValue = StaticData.PlcDic[2].Read(agvGetPoint.plcpointAddress);//小包出口的到位 + var rfidValue = StaticData.PlcDic[2].ReadRFID(rfidPoint.plcpointAddress);//小包出口的RFID + if (agvGetValue != null && agvPutValue != null && rfidValue != null)//读Plc { - if (Convert.ToInt32(agvPutValue) == 0) + if (Convert.ToInt32(agvPutValue) == 0)//小包入口叫料 { - bool canCreate = dbContext.WcsTask.Where(t => t.endPointId == 36 || t.nextPointId == 8 || t.endPointId == endEquip.objid).Any(); - if (!canCreate) + bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 8 || t.endPointId == endEquip.objid).Any();//有没有生成任务 + //36 是小包入口的设备信息,8是二楼Agv设备 + if (!canCreate)//没有任务 { - BaseEquip? baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.emptyCount > 1); - if (baseEquip != null) + BaseEquip? baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.emptyCount >= 1);//二楼周转区是否存在一个空托盘以上的 + if (baseEquip != null)//二楼周转区有可以去小包入口的库位 { var wcsTask = new WcsTask() { objid = StaticData.SnowId.NextId(), - endPointId = endEquip.objid, + endPointId = endEquip.objid,//小包入口 endPointNo = endEquip.equipNo, - nextPointId = agvEquip.objid, + nextPointId = agvEquip.objid,//二楼叉车 nextPointNo = agvEquip.equipNo, - currPointId = baseEquip.objid, + currPointId = baseEquip.objid,//周转区库位 currPointNo = baseEquip.equipNo, taskStatus = 0, useFlag = 1, @@ -79,8 +81,8 @@ namespace Khd.Core.Wcs.Wcs floorNo = 2, fromFloorNo = 2, isEmpty = "1", - qty = baseEquip.emptyCount, - taskType = 59, + qty = baseEquip.emptyCount,//托盘的数量 + taskType = 59,//任务类型 }; dbContext.Add(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); @@ -89,14 +91,14 @@ namespace Khd.Core.Wcs.Wcs Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成请求空托盘任务成功:" + wcsTask.objid); LogManager.Info("二楼码垛输送线生成请求空托盘任务成功:" + wcsTask.objid); } - else + else//二楼周转区没有空托盘 { - baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == SystemData.maxTray && t.equipStatus == 1); - if (baseEquip != null) + baseEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.emptyCount == SystemData.maxTray && 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) + BaseEquip ThirdLineEquip = dbContext.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() @@ -129,18 +131,18 @@ namespace Khd.Core.Wcs.Wcs } else { - BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == 40); - if (startEquip.emptyCount > 1) + BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == 40);//一楼的托盘库 + if (startEquip.emptyCount > 1 && startEquip.emptyCount <= SystemData.maxTray) { - 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); + 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) { - StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); + StaticData.PlcDic[0].WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());//托盘库多个出 WcsTask wcsTaskManual = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -169,88 +171,137 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("二楼码垛输送线生成手动托盘任务成功:" + wcsTaskManual.objid); } } + else if (startEquip.emptyCount > SystemData.maxTray)//如果托盘库大于五个,出一个 + { + BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "oneOut");//多个出 + 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) + { + 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 = 1, + 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); + } + } + else + { + //todo:没有空托盘 + Console.WriteLine(DateTime.Now + ":二楼码垛输送线没有空托盘"); + LogManager.Info("二楼码垛输送线没有空托盘"); + } } } } } - if (Convert.ToInt32(agvGetValue) == 1 && !string.IsNullOrEmpty(rfidValue)) + if (Convert.ToInt32(agvGetValue) == 1 && !string.IsNullOrEmpty(rfidValue))//小包出口成品入口 { MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == rfidValue); if (mesBasePalletInfo != 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.locationStatus == "1") - .Where(t => t.instockFlag == "0") - .Where(t => t.outstockFlag == "0") - .Where(t => t.warehouseId == 231) - .ToList(); - var wmsProductStocks = dbContext.WmsProductStock - .Where(t => t.warehouseId == 231) - .ToList(); - WmsBaseLocation? wmsBaseLocation = null; - if (wmsBaseLocations.Count > 0) + MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == mesBasePalletInfo.materialBarcode); + if (mesBaseBarcodeInfo != null) { - List containerCodes = wmsBaseLocations - .Where(t => t.locDeep == 1) - .Select(t => t.containerCode).ToList();//深库位的托盘 - List mesBasePalletInfos = dbContext.MesBasePalletInfo - .Where(t => t.materialId == mesBasePalletInfo.materialId) - .Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料 - - //wmsBaseLocations.Where(t=>t.locDeep==2&&string.IsNullOrEmpty()).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 - && b.locRow == (a.b.locRow % 2 == 0 ? a.b.locRow - 1 : a.b.locRow + 1) - && 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) + 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.locationStatus == "1") + .Where(t => t.warehouseId == 231) + .ToList();//所有可用库位 + var wmsProductStocks = dbContext.WmsProductStock + .Where(t => t.warehouseId == 231) + .ToList();//仓库的库存 + WmsBaseLocation? wmsBaseLocation = null; + if (wmsBaseLocations.Count > 0) { - BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 37); - var wcsTask = new WcsTask() + List containerCodes = wmsBaseLocations + .Where(t => t.locDeep == 1) + .Select(t => t.containerCode).ToList();//深库位的有托盘 + + List mesBasePalletInfos = dbContext.MesBaseBarcodeInfo + .Where(t => t.saleOrderId == mesBaseBarcodeInfo.saleOrderId)//销售订单 + .Where(t => t.materialId == mesBasePalletInfo.materialId)//物料Id + .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//浅库位 + && b.locRow == (a.b.locRow % 2 == 0 ? a.b.locRow - 1 : a.b.locRow + 1) + //如果是4则找3,如果是1则找2 + && a.b.locColumn == b.locColumn//列数相同 + && 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)//如果找到库位,生成入库任务 { - objid = StaticData.SnowId.NextId(), - currPointId = startEquip.objid, - currPointNo = startEquip.equipNo, - nextPointId = agvEquip.objid, - nextPointNo = agvEquip.equipNo, - endPointId = wmsBaseLocation.locationId, - endPointNo = wmsBaseLocation.locationCode, - taskStatus = 0, - useFlag = 1, - containerNo = rfidValue, - createBy = "WCS", - createTime = DateTime.Now, - floorNo = 2, - fromFloorNo = 2, - isEmpty = "0", - taskType = 49, - qty = 1, - }; - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); - dbContext.Add(wcsTaskLog); - dbContext.SaveChanges(); - Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid); - LogManager.Info("二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid); + BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 37); + var wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + currPointId = startEquip.objid, + currPointNo = startEquip.equipNo, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + endPointId = wmsBaseLocation.locationId, + endPointNo = wmsBaseLocation.locationCode, + taskStatus = 0, + useFlag = 1, + containerNo = rfidValue, + createBy = "WCS", + createTime = DateTime.Now, + floorNo = 2, + fromFloorNo = 2, + isEmpty = "0", + taskType = 49, + qty = 1, + }; + dbContext.Add(wcsTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid); + LogManager.Info("二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid); + } + else + { + //报警 + } } } } diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs index c9b2a31..c3a5413 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs @@ -236,11 +236,11 @@ namespace Khd.Core.Wcs.Wcs } } } - else if (wcsTask.taskStatus == 8) + else if (wcsTask.taskStatus == 8)//小车任务完成 { - if (wcsTask.taskType == 50 && wcsTask.containerNo == rfid) + if (wcsTask.taskType == 50 && wcsTask.containerNo == rfid)//50是成品出库 { - BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 1); + BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 1); dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); newTask.serialNo = SystemData.GetSerialNo(dbContext); @@ -265,9 +265,9 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("二楼接驳位生成任务出库成功,托盘号:" + rfid); Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务出库成功,托盘号:" + rfid); } - else + else//一般情况下是废料的任务 { - BaseEquip? endEquip = StaticData.BaseEquip.First(t => t.objid == 1); + BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.endPointId); dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); newTask.serialNo = SystemData.GetSerialNo(dbContext); diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index 88f50b2..0aa3514 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -85,7 +85,7 @@ namespace Khd.Core.Wcs.Wcs } catch { - + //报警 } } LogManager.Error(ex); diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index 24c1f3e..b2fdec6 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -4,6 +4,7 @@ using Khd.Core.EntityFramework; using Khd.Core.Library.Mapper; using Khd.Core.Plc.S7; using Khd.Core.Wcs.Global; +using Masuit.Tools; using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -54,10 +55,10 @@ namespace Khd.Core.Wcs.Wcs try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - //var getTrayValue = this._plc.Read(getTrayPoint.plcpointAddress); - //if (getTrayValue != null && Convert.ToInt32(getTrayValue) == 1) - BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 31); - if (baseEquip.emptyCount == 1) + var getTrayValue = StaticData.PlcDic[2].Read(getTrayPoint.plcpointAddress); + if (getTrayValue != null && Convert.ToInt32(getTrayValue) == 1) + //BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 31); + //if (baseEquip.emptyCount == 1) { var task = dbContext.WcsTask.Where(t => t.taskType == 42 && t.useFlag == 0).FirstOrDefault(); if (task != null) @@ -66,7 +67,7 @@ namespace Khd.Core.Wcs.Wcs 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) - if (endEquip.emptyCount != SystemData.maxTray) + if (endEquip.emptyCount < SystemData.maxTray) { task.taskType = 42; task.useFlag = 1; @@ -136,34 +137,19 @@ namespace Khd.Core.Wcs.Wcs { WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation toBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - 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 = fromBaseLocation.agvPositionCode, - nextPointId = item.endPointId, - nextPointNo = toBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = wcsCmd.objid.ToString(), + reqCode = StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=fromBaseLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=toBaseLocation.agvPositionCode, type="00" } }, @@ -175,15 +161,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - LogManager.Info("五楼Agv下发任务成功:" + message); - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -195,21 +178,6 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 3); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - 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 = item.endPointId, - nextPointNo = wmsBaseLocation.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { reqCode = StaticData.SnowId.NextId().ToString(), @@ -217,12 +185,12 @@ namespace Khd.Core.Wcs.Wcs { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" } }, @@ -234,14 +202,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -258,34 +224,20 @@ namespace Khd.Core.Wcs.Wcs wmsRawOutstockDetail.outstockTime = DateTime.Now; BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 31); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); - 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 = wmsBaseLocation.agvPositionCode, - nextPointId = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - }; + var agvTask = new RequestAGVTaskDto { - reqCode = StaticData.SnowId.NextId().ToString(), + reqCode =StaticData.SnowId.NextId().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=wmsBaseLocation.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type="00" } }, @@ -297,15 +249,13 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; item.taskStatus = 1; dbContext.Update(wmsRawOutstockDetail); 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 @@ -318,34 +268,19 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId); - 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 = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = StaticData.SnowId.NextId().ToString(), + reqCode = StaticData.SnowId.NextId().ToString().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode= startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type="00" } }, @@ -358,14 +293,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -375,37 +308,21 @@ namespace Khd.Core.Wcs.Wcs } else if (item.taskType == 42)//翻转机-收集架 { - //var startEquip = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId); - 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 = startEquip.agvPositionCode, - nextPointId = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - }; var agvTask = new RequestAGVTaskDto { - reqCode = StaticData.SnowId.NextId().ToString(), + reqCode = StaticData.SnowId.NextId().ToString().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type="00" } }, @@ -418,14 +335,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -437,34 +352,20 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId); - 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 = startEquip.agvPositionCode, - nextPointId = endEquip.objid, - nextPointNo = endEquip.agvPositionCode, - }; + var agvTask = new RequestAGVTaskDto { - reqCode = StaticData.SnowId.NextId().ToString(), + reqCode = StaticData.SnowId.NextId().ToString().ToString(), positionCodePath = new List { new () { - positionCode=wcsCmd.currPointNo, + positionCode=startEquip.agvPositionCode, type="00" }, new () { - positionCode=wcsCmd.nextPointNo, + positionCode=endEquip.agvPositionCode, type="00" } }, @@ -477,14 +378,12 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -498,98 +397,20 @@ namespace Khd.Core.Wcs.Wcs BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 3); if (lineEquip.equipStatus == 0) { - 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); - } - } - } - 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) - { - 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(), + reqCode = StaticData.SnowId.NextId().ToString().ToString(), positionCodePath = new List { new() { - positionCode = wcsCmd.currPointNo, + positionCode =startEquip.agvPositionCode, type = "00" }, new() { - positionCode = wcsCmd.nextPointNo, + positionCode = lineEquip.equipNo, type = "00" } }, @@ -602,16 +423,61 @@ namespace Khd.Core.Wcs.Wcs var reponseMessage = JsonConvert.DeserializeObject(result); if (reponseMessage != null && reponseMessage.message == "成功") { - wcsCmd.taskCode = reponseMessage.data; - wcsCmd.cmdStatus = 1; + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; + 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 }); + dbContext.SaveChanges(); + } + else + { + LogManager.Info("三楼Agv下发任务失败" + item.taskType + message); + } + } + } + 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) + { + var agvTask = new RequestAGVTaskDto + { + reqCode = StaticData.SnowId.NextId().ToString().ToString(), + positionCodePath = new List + { + new() + { + positionCode = startEquip.agvPositionCode, + type = "00" + }, + new() + { + positionCode = lineEquip.equipNo, + 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 == "成功") + { + LogManager.Info("三楼楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message); + Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); + item.taskCode = reponseMessage.data; 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 @@ -623,8 +489,7 @@ namespace Khd.Core.Wcs.Wcs } else { - WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); - if (wcsCmd != null) + { if (item.taskStatus == 3) { @@ -656,32 +521,27 @@ namespace Khd.Core.Wcs.Wcs } var agvTask = new RequestAGVTaskDto { - reqCode = StaticData.SnowId.NextId().ToString(), - taskCode = wcsCmd.taskCode + reqCode = StaticData.SnowId.NextId().ToString().ToString(), + taskCode = item.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 = 4; - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); - dbContext.Update(wcsCmd); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); - dbContext.SaveChanges(); } } - else if (item.taskStatus == 5) + else if (item.taskStatus == 5)//任务完成 { - if (item.currPointId == 3) + if (item.currPointId == 3)//从接驳位出发 { BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 3); lineEquip.equipStatus = 0; dbContext.Update(lineEquip); } - if (item.taskType == 67) + if (item.taskType == 67)//移库 { using var transaction = dbContext.Database.BeginTransaction(); try @@ -692,35 +552,22 @@ namespace Khd.Core.Wcs.Wcs 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(); + transaction.Commit(); } catch (Exception ex) { @@ -728,12 +575,11 @@ namespace Khd.Core.Wcs.Wcs LogManager.Error(ex); } } - if (item.taskType == 39) + if (item.taskType == 39)//入库 { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.endPointId && t.warehouseFloor == 3); wmsBaseLocation.locationStatus = "1"; - wmsBaseLocation.instockFlag = "0"; wmsBaseLocation.containerCode = item.containerNo; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; @@ -747,7 +593,7 @@ namespace Khd.Core.Wcs.Wcs { rawStockId = StaticData.SnowId.NextId(), activeFlag = "1", - saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId, + saleOrderId = mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId, stockType = "1", supplierId = mesBaseBarcodeInfo.manufacturerId, qualityStatus = "1", @@ -768,15 +614,13 @@ namespace Khd.Core.Wcs.Wcs }; dbContext.Add(wmsRawStock); dbContext.Update(wmsBaseLocation); - 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(); } } } - else if (item.taskType == 40) + else if (item.taskType == 40)//周转区-收集架,暂不使用 { BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId); @@ -790,17 +634,14 @@ namespace Khd.Core.Wcs.Wcs endEquip.updateBy = "WCS"; dbContext.Update(startEquip); dbContext.Update(endEquip); - 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(); } - else if (item.taskType == 41) + else if (item.taskType == 41)//原材料出库 { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation .First(t => t.locationId == item.currPointId); - wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = null; wmsBaseLocation.updateTime = DateTime.Now; @@ -819,7 +660,7 @@ namespace Khd.Core.Wcs.Wcs { BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31); endEquip.emptyCount = 1; - if (wmsRawOutstock.realOutstockAmount == wmsRawOutstock.outstockAmount) + if (wmsRawOutstock.realOutstockAmount >= wmsRawOutstock.outstockAmount) { wmsRawOutstock.endTime = DateTime.Now; wmsRawOutstock.executeStatus = "2"; @@ -828,7 +669,6 @@ namespace Khd.Core.Wcs.Wcs 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; @@ -839,21 +679,17 @@ namespace Khd.Core.Wcs.Wcs 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(); } } } } - else if (item.taskType == 42) + else if (item.taskType == 42)//翻转机就到收集架 { MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == item.containerNo); if (mesBasePalletInfo != null) { mesBasePalletInfo.bindAmount = null; - mesBasePalletInfo.createBy = null; - mesBasePalletInfo.bindAmount = null; - mesBasePalletInfo.createTime = null; mesBasePalletInfo.materialBarcode = null; mesBasePalletInfo.materialCode = null; mesBasePalletInfo.materialId = null; @@ -870,33 +706,29 @@ namespace Khd.Core.Wcs.Wcs emptyEquip.updateTime = DateTime.Now; emptyEquip.updateBy = "WCS"; dbContext.Update(emptyEquip); - 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(); } } - else if (item.taskType == 43) + else if (item.taskType == 43)//收集架-周转区 { BaseEquip emptyEquip = dbContext.BaseEquip.First(t => t.objid == 35); BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId); emptyEquip.emptyCount = 0; emptyEquip.updateTime = DateTime.Now; emptyEquip.updateBy = "WCS"; - endEquip.emptyCount += item.qty; + endEquip.emptyCount = item.qty; endEquip.equipStatus = 1; endEquip.updateTime = DateTime.Now; endEquip.updateBy = "WCS"; dbContext.Update(endEquip); dbContext.Update(emptyEquip); - 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(); } - else if (item.taskType == 44 || item.taskType == 101) + 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); @@ -912,9 +744,7 @@ namespace Khd.Core.Wcs.Wcs item.floorNo = endEquip.floorNo; item.taskStatus = 6; dbContext.Update(item); - dbContext.Remove(wcsCmd); 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(); } } @@ -940,7 +770,7 @@ namespace Khd.Core.Wcs.Wcs } catch { - + } } LogManager.Error(ex); diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs index bcf34f1..95c00b4 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs @@ -67,8 +67,6 @@ namespace Khd.Core.Wcs.Wcs .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") .OrderByDescending(t => t.locRow) .ThenByDescending(t => t.locColumn) @@ -92,12 +90,9 @@ namespace Khd.Core.Wcs.Wcs && b.locRow == (a.b.locRow % 2 == 0 ? a.b.locRow - 1 : a.b.locRow + 1) && a.b.locColumn == b.locColumn && b.locationStatus == "1" - && b.outstockFlag == "0" - && b.instockFlag == "0" && string.IsNullOrEmpty(b.containerCode) select new { b };//在上面的基础上获取对应托盘的外侧库位的空库位信息 - WmsBaseLocation? wmsBaseLocation = null; - wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位 + WmsBaseLocation? wmsBaseLocation = outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 1);//找不到再找深库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 @@ -116,7 +111,6 @@ namespace Khd.Core.Wcs.Wcs newTask.endPointNo = wmsBaseLocation.locationCode; newTask.taskType = 39; newTask.useFlag = 1; - wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.locationStatus = "2"; dbContext.Update(wmsBaseLocation); dbContext.Add(newTask); diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs index 9310438..9804ed7 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs @@ -1916,8 +1916,6 @@ namespace Khd.Core.Wpf.Form var wmsBaseLocations = dbContext.WmsBaseLocation .Where(t => t.ContainerStatus == "1") .Where(t => t.locationStatus == "1") - .Where(t => t.instockFlag == "0") - .Where(t => t.outstockFlag == "0") .Where(t => t.activeFlag == "1") .OrderBy(t => t.locRow) .ThenBy(t => t.locColumn) @@ -1942,7 +1940,6 @@ namespace Khd.Core.Wpf.Form foreach (var item in outLocation) { WmsBaseLocation startBaseLocation = item.a; - startBaseLocation.outstockFlag = "1"; startBaseLocation.locationStatus = "6"; startBaseLocation.ContainerStatus = "2"; addList.Add(new WcsTaskManual() @@ -1972,7 +1969,6 @@ namespace Khd.Core.Wpf.Form WmsBaseLocation? startBaseLocation = wmsBaseLocations.Where(t => !list.Contains(t.locationId)).FirstOrDefault(); if (startBaseLocation != null) { - startBaseLocation.outstockFlag = "1"; startBaseLocation.locationStatus = "6"; startBaseLocation.ContainerStatus = "2"; addList.Add(new WcsTaskManual() @@ -2078,8 +2074,6 @@ namespace Khd.Core.Wpf.Form //} var wmsBaseLocation = dbContext.WmsBaseLocation .Where(t => t.locationStatus == "1") - .Where(t => t.instockFlag == "0") - .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 512 && t.ContainerStatus == "1").ToList(); var wmsRawStock = dbContext.WmsRawStock.Where(t => t.warehouseId == 512).ToList(); List palletInfoCodes = wmsRawStock.Select(t => t.palletInfoCode).ToList(); @@ -2090,7 +2084,6 @@ namespace Khd.Core.Wpf.Form for (int i = 0; i < EmptyCountForm.EmptyTaskCount; i++) { WmsBaseLocation startBaseLocation = wmsBaseLocation[i]; - startBaseLocation.outstockFlag = "1"; startBaseLocation.locationStatus = "6"; startBaseLocation.ContainerStatus = "2"; addList.Add(new WcsTaskManual() @@ -2192,7 +2185,6 @@ namespace Khd.Core.Wpf.Form fromFloorNo = 5, useFlag = 1 }); - item.outstockFlag = "1"; item.ContainerStatus = "2"; item.locationStatus = "6"; dbContext.Update(item); @@ -2902,7 +2894,7 @@ namespace Khd.Core.Wpf.Form private void SelectOutBtn_Click(object sender, RoutedEventArgs e) { - SelectOutRawForm selectOutRawForm = new SelectOutRawForm(this._host); + SelectOutRawForm selectOutRawForm=new SelectOutRawForm(this._host); selectOutRawForm.ShowDialog(); } }