From 512b4d6d1712df7a5324615303eb0f6cdb0e0d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com> Date: Sun, 4 Aug 2024 18:48:36 +0800 Subject: [PATCH] 1 --- .../Models/WmsInventoryCheckDetail.cs | 2 +- .../DefaultDbContext.cs | 1 + src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 99 +++++---- src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 148 ++++++------ src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 74 +++--- src/Khd.Core.Wpf/Form/FormBoardT.xaml | 15 +- src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 210 +++++++++++++++++- src/Khd.Core.Wpf/LoginPage.xaml | 4 +- src/Khd.Core.Wpf/LoginPage.xaml.cs | 5 + .../Inventory/InventoryTaskEditForm.xaml | 5 +- .../Inventory/InventoryTaskEditForm.xaml.cs | 164 +++++++++----- .../TaskForm/Inventory/InventoryTaskForm.xaml | 3 +- .../Inventory/InventoryTaskForm.xaml.cs | 50 +++-- .../TaskForm/SelectOutRawForm.xaml.cs | 5 +- src/Khd.Core.Wpf/appsettings.json | 4 +- 15 files changed, 544 insertions(+), 245 deletions(-) diff --git a/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs b/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs index 48cb6b1..125f890 100644 --- a/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs +++ b/src/Khd.Core.Domain/Models/WmsInventoryCheckDetail.cs @@ -11,7 +11,7 @@ namespace Khd.Core.Domain.Models [Column("inventory_check_detail_id")] public long InventoryCheckDetailId { get; set; } [Column("inventory_check_id")] - public long InventoryCheckId { get; set; } + public long? InventoryCheckId { get; set; } [Column("material_id")] public long? MaterialId { get; set; } [Column("location_code")] diff --git a/src/Khd.Core.EntityFramework/DefaultDbContext.cs b/src/Khd.Core.EntityFramework/DefaultDbContext.cs index a97523c..09d0122 100644 --- a/src/Khd.Core.EntityFramework/DefaultDbContext.cs +++ b/src/Khd.Core.EntityFramework/DefaultDbContext.cs @@ -10,6 +10,7 @@ namespace Khd.Core.EntityFramework public DefaultDbContext(DbContextOptions options) : base(options) { } + public DbSet SysUser { get; set; } public DbSet SysRole { get; set; } public DbSet SysMenu { get; set; } diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 45e1854..ec356ee 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -1077,57 +1077,63 @@ namespace Khd.Core.Wcs.Wcs using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 21); - BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == 10); while (true) { try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - var wmsRawReturn = dbContext.WmsRawReturn - .Where(t => t.auditStatus == "1") - .Where(t => t.executeStatus == "0") - .FirstOrDefault(); - if (wmsRawReturn != null) + BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10); + + if (!string.IsNullOrEmpty(baseEquip.endStationCode) && baseEquip.ud3 == "1") { - bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == baseEquip.objid).Any(); - if (!hasTask) + var wmsRawReturn = dbContext.WmsRawReturn + .Where(t => t.auditStatus == "1") + .Where(t => t.executeStatus == "0") + .Where(t => t.endStationCode == baseEquip.endStationCode) + .FirstOrDefault(); + if (wmsRawReturn != null) { - //任务未开始Status=0 - BaseEquip? startEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawReturn.endStationCode); - if (startEquip != null) + bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == baseEquip.objid).Any(); + if (!hasTask) { - WcsTask wcsTask = new() + //任务未开始Status=0 + BaseEquip? startEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawReturn.endStationCode); + if (startEquip != null) { - objid = StaticData.SnowId.NextId(), - orderId = wmsRawReturn.rawReturnId, - taskType = 48, - containerNo = null, - currPointId = startEquip.objid, - currPointNo = startEquip.equipNo, - nextPointId = baseEquip.objid, - nextPointNo = baseEquip.equipNo, - endPointId = endEquip.objid, - endPointNo = endEquip.equipNo, - serialNo = SystemData.GetSerialNo(dbContext), - taskStatus = 0, - createTime = DateTime.Now, - createBy = "WCS", - materialId = wmsRawReturn.materialId, - qty = 1, - useFlag = 1, - equipmentNo = startEquip.equipNo, - remark = "装配区返库", - floorNo = 5, - masterId = wmsRawReturn.materialId, - fromFloorNo = 5, - //materialNo = wmsRawReturn.materialBatch, - }; - wmsRawReturn.executeStatus = "1"; - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); - dbContext.Add(wcsTaskLog); - dbContext.Update(wmsRawReturn); - dbContext.SaveChanges(); + WcsTask wcsTask = new() + { + objid = StaticData.SnowId.NextId(), + orderId = wmsRawReturn.rawReturnId, + taskType = 48, + containerNo = null, + currPointId = startEquip.objid, + currPointNo = startEquip.equipNo, + nextPointId = baseEquip.objid, + nextPointNo = baseEquip.equipNo, + endPointId = endEquip.objid, + endPointNo = endEquip.equipNo, + serialNo = SystemData.GetSerialNo(dbContext), + taskStatus = 0, + createTime = DateTime.Now, + createBy = "WCS", + materialId = wmsRawReturn.materialId, + qty = 1, + useFlag = 1, + equipmentNo = startEquip.equipNo, + remark = "装配区返库", + floorNo = 5, + masterId = wmsRawReturn.materialId, + fromFloorNo = 5, + //materialNo = wmsRawReturn.materialBatch, + }; + baseEquip.ud3 = null; + dbContext.Update(baseEquip); + dbContext.Add(wcsTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.Update(wmsRawReturn); + dbContext.SaveChanges(); + } } } } @@ -1664,7 +1670,12 @@ namespace Khd.Core.Wcs.Wcs //if (taskCount == 0 && wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0) if (taskCount == 0) { - foreach (var wcs in wcsTaskManuals.Take(6)) + List list = wcsTaskManuals.Where(t => t.taskType == 100).ToList(); + if (list.Count == 0) + { + list = wcsTaskManuals.Where(t => t.taskType == 30).ToList(); + } + foreach (var wcs in list.Take(6)) { WcsTask wcsTask = CoreMapper.Map(wcs); WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); @@ -1821,7 +1832,7 @@ namespace Khd.Core.Wcs.Wcs if (endEquip.equipType == 10)//CTU出库到装配区 { BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10); - if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) ) + if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) && endStationCodeEquip.ud3 != "1") //if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) && endStationCodeEquip.IsOut == 1) { if (item.endStationCode != endStationCodeEquip.endStationCode) diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index bcee665..577ca09 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -331,88 +331,92 @@ namespace Khd.Core.Wcs.Wcs } else { - //根据托盘号获取物料码 - 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) + hasTask = wcsTasks.Where(t => t.containerNo == RFID001Value).Any(); + if (!hasTask) { - if (string.IsNullOrEmpty(material.materialBarcode)) + //根据托盘号获取物料码 + 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) { - continue; - } - bool hasBarInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == RFID001Value && t.barcodeInfo == material.materialBarcode).Any(); - if (!hasBarInfo) - { - continue; - } - if (taskLog != null) - { - if (taskLog.materialBarcode == material.materialBarcode) + if (string.IsNullOrEmpty(material.materialBarcode)) { - if (baseEquip.containerNo == "0") + continue; + } + bool hasBarInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == RFID001Value && t.barcodeInfo == material.materialBarcode).Any(); + if (!hasBarInfo) + { + continue; + } + if (taskLog != null) + { + if (taskLog.materialBarcode == material.materialBarcode) { - baseEquip.containerNo = null; - dbContext.Update(baseEquip); - dbContext.SaveChanges(); - _logger.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功"); - } - else if (baseEquip.containerNo != RFID001Value) - { - baseEquip.containerNo = RFID001Value; - dbContext.Update(baseEquip); - dbContext.SaveChanges(); - _logger.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); - Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); - Thread.Sleep(3000); - continue; - } - else - { - Thread.Sleep(3000); - continue; + if (baseEquip.containerNo == "0") + { + baseEquip.containerNo = null; + dbContext.Update(baseEquip); + dbContext.SaveChanges(); + _logger.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功"); + } + else if (baseEquip.containerNo != RFID001Value) + { + baseEquip.containerNo = RFID001Value; + dbContext.Update(baseEquip); + dbContext.SaveChanges(); + _logger.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); + Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); + Thread.Sleep(3000); + continue; + } + else + { + Thread.Sleep(3000); + continue; + } } } - } - var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId; - if (warehouseId != null) - { - var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault(); - if (TargetFloor != null) + var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId; + if (warehouseId != null) { - //插入task表 - - var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault(); - if (dic != null) + var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault(); + if (TargetFloor != null) { - var newTask = new WcsTask() + //插入task表 + + var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault(); + if (dic != null) { - 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(); + 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(); + } } } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs index 55021c9..26768e4 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs @@ -191,41 +191,53 @@ namespace Khd.Core.Wcs.Wcs } else if (task.taskType == 100) { - dbContext.WcsTask.Where(t => t.objid == task.objid).Delete(); - //根据rfid找到库位 - //生成入库任务 - var wmsBaseLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == rfid); - if (wmsBaseLocation != null) + WmsInventoryCheck? wmsInventoryCheck = dbContext.WmsInventoryCheck.Where(t => t.InventoryCheckId == task.orderId).FirstOrDefault(); + if (wmsInventoryCheck != null) { - BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipNo == "FL051"); - BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11); + wmsInventoryCheck.InventoryingAmount = wmsInventoryCheck.InventoryingAmount > 0 ? wmsInventoryCheck.InventoryingAmount - 1 : 0; + wmsInventoryCheck.InventoriedAmount++; + if (wmsInventoryCheck.InventoriedAmount >= wmsInventoryCheck.LocationAmount) + { + wmsInventoryCheck.CheckStatus = "2"; + wmsInventoryCheck.EndTime = DateTime.Now; + } + dbContext.WcsTask.Where(t => t.objid == task.objid).Delete(); + //根据rfid找到库位 + //生成入库任务 + var wmsBaseLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == rfid); if (wmsBaseLocation != null) { - var wcsTask = new WcsTask() + BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipNo == "FL051"); + BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11); + if (wmsBaseLocation != null) { - objid = StaticData.SnowId.NextId(), - currPointId = baseEquip.objid, - currPointNo = baseEquip.agvPositionCode, - nextPointId = ctuEquip.objid, - useFlag = 1, - endPointId = wmsBaseLocation.locationId, - endPointNo = wmsBaseLocation.agvPositionCode, - taskType = 29, - taskStatus = 0, - floorNo = 5, - containerNo = rfid.ToString(), - equipmentNo = baseEquip.equipNo, - createBy = FloorNo + "楼CTU", - createTime = DateTime.Now, - }; - wmsBaseLocation.locationStatus = "2"; - wmsBaseLocation.updateTime = DateTime.Now; - dbContext.Update(wmsBaseLocation); - dbContext.Add(wcsTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); - dbContext.Add(wcsTaskLog); - dbContext.SaveChanges(); - StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString()); + var wcsTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + currPointId = baseEquip.objid, + currPointNo = baseEquip.agvPositionCode, + nextPointId = ctuEquip.objid, + useFlag = 1, + endPointId = wmsBaseLocation.locationId, + endPointNo = wmsBaseLocation.agvPositionCode, + taskType = 29, + taskStatus = 0, + floorNo = 5, + containerNo = rfid.ToString(), + equipmentNo = baseEquip.equipNo, + createBy = FloorNo + "楼CTU", + createTime = DateTime.Now, + }; + dbContext.Update(wmsInventoryCheck); + wmsBaseLocation.locationStatus = "2"; + wmsBaseLocation.updateTime = DateTime.Now; + dbContext.Update(wmsBaseLocation); + dbContext.Add(wcsTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask); + dbContext.Add(wcsTaskLog); + dbContext.SaveChanges(); + StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString()); + } } } } diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml index 402179d..a020292 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml @@ -1776,7 +1776,7 @@