From 9e8547ba95fb4c65aee01279f932d3fddf49cb33 Mon Sep 17 00:00:00 2001 From: liuwf Date: Thu, 5 Sep 2024 14:52:10 +0800 Subject: [PATCH] =?UTF-8?q?change-=E8=B0=83=E5=BA=A6=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E5=8F=8A=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E5=AF=B9=E7=85=A7?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=A3=80=E6=9F=A5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/WmsRawReturnDetail.cs | 104 ++++++++++++++ .../DefaultDbContext.cs | 1 + src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 132 +++++++++++------- src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 16 ++- src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs | 7 +- src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs | 89 +++++++----- src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 85 +++++++---- 7 files changed, 312 insertions(+), 122 deletions(-) create mode 100644 src/Khd.Core.Domain/Models/WmsRawReturnDetail.cs diff --git a/src/Khd.Core.Domain/Models/WmsRawReturnDetail.cs b/src/Khd.Core.Domain/Models/WmsRawReturnDetail.cs new file mode 100644 index 0000000..ca0792a --- /dev/null +++ b/src/Khd.Core.Domain/Models/WmsRawReturnDetail.cs @@ -0,0 +1,104 @@ + +//----------------------------------------------------------------------- +// +// * Copyright (C) 2021 KEHAIDASOFT All Rights Reserved +// * version : 4.0.30319.42000 +// * author : khd by t4-2 +// +//----------------------------------------------------------------------- + +using Microsoft.EntityFrameworkCore; +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Khd.Core.Domain.Models +{ + + [Table("wms_raw_return_detail")] + public class WmsRawReturnDetail + { + [Key] + [Column("raw_return_detail_id")] + public long RawReturnDetailId { get; set; } + + [Column("raw_return_id")] + public long RawReturnId { get; set; } + + [Column("location_code")] + [StringLength(64)] + public string LocationCode { get; set; } + + [Column("material_barcode")] + [StringLength(64)] + public string MaterialBarcode { get; set; } + + [Column("material_id")] + public long MaterialId { get; set; } + + [Column("instock_batch")] + [StringLength(64)] + public string InstockBatch { get; set; } + + [Column("material_production_date")] + public DateTime? MaterialProductionDate { get; set; } + + [Column("plan_amount")] + [Precision(16, 2)] + public decimal PlanAmount { get; set; } + + [Column("return_amount")] + [Precision(16, 2)] + public decimal? ReturnAmount { get; set; } + + [Column("execute_status")] + [StringLength(1)] + public string ExecuteStatus { get; set; } + + [Column("erp_status")] + [StringLength(1)] + public string ErpStatus { get; set; } + + [Column("erp_amount")] + [Precision(16, 2)] + public decimal? ErpAmount { get; set; } + + [Column("return_person")] + [StringLength(64)] + public string ReturnPerson { get; set; } + + [Column("return_time")] + public DateTime? ReturnTime { get; set; } + + [Column("return_way")] + [StringLength(1)] + public string ReturnWay { get; set; } + + [Column("machine_name")] + [StringLength(64)] + public string MachineName { get; set; } + + [Column("quality_status")] + [StringLength(1)] + public string QualityStatus { get; set; } + + [Column("create_by")] + [StringLength(64)] + public string CreateBy { get; set; } + + [Column("create_date")] + public DateTime? CreateDate { get; set; } + + [Column("update_by")] + [StringLength(64)] + public string UpdateBy { get; set; } + + [Column("update_date")] + public DateTime? UpdateDate { get; set; } + + [Column("stack_amount")] + [Precision(16, 2)] + public decimal? StackAmount { get; set; } + } +} + diff --git a/src/Khd.Core.EntityFramework/DefaultDbContext.cs b/src/Khd.Core.EntityFramework/DefaultDbContext.cs index 512c5c0..2e72f73 100644 --- a/src/Khd.Core.EntityFramework/DefaultDbContext.cs +++ b/src/Khd.Core.EntityFramework/DefaultDbContext.cs @@ -19,6 +19,7 @@ namespace Khd.Core.EntityFramework public DbSet WmsInventoryCheckDetail { get; set; } public DbSet MesBaseMaterialInfo { get; set; } public DbSet WmsRawReturn { get; set; } + public DbSet WmsRawReturnDetail { get; set; } public DbSet WcsTaskManual { get; set; } public DbSet BaseDictionary { get; set; } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 8b5c298..b8c88b5 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -483,27 +483,47 @@ namespace Khd.Core.Wcs.Wcs { Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + item.currPointNo + "," + item.endPointNo); _logger.Info("五楼Agv完成任务成功:" + item.ToJsonString()); - 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) + + if ( wmsProductOutstock != null) { - wmsProductOutstockDetail.executeStatus = "2"; - wmsProductOutstockDetail.endTime = DateTime.Now; - dbContext.Update(wmsProductOutstockDetail); + var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First(); + WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode); + + wmsProductOutstock.outstockQty += 1; if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) { wmsProductOutstock.endTime = DateTime.Now; wmsProductOutstock.executeStatus = "2"; } - WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation - .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5); + + + WmsProductOutstockDetail newWmsProductOutstockDetail = new WmsProductOutstockDetail(); + newWmsProductOutstockDetail.productOutstockId = wmsProductOutstock.productOutstockId; + newWmsProductOutstockDetail.warehouseId = wmsProductOutstock.warehouseId; + newWmsProductOutstockDetail.locationCode = wmsBaseLocation.locationCode; + newWmsProductOutstockDetail.productBarcode = wmsProductStock.productBatch; + newWmsProductOutstockDetail.productId = wmsProductStock.productId; + newWmsProductOutstockDetail.planAmount = wmsProductOutstock.applyQty; + newWmsProductOutstockDetail.outstockAmount = wmsProductOutstock.outstockQty; + newWmsProductOutstockDetail.executeStatus = "2"; + newWmsProductOutstockDetail.updateBy = "WCS"; + newWmsProductOutstockDetail.updateDate = DateTime.Now; + newWmsProductOutstockDetail.beginTime = DateTime.Now; + newWmsProductOutstockDetail.endTime = DateTime.Now; + + + wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = null; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; dbContext.Update(wmsBaseLocation); + SystemData.UnLockOutLocation(wmsBaseLocation, dbContext); + dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete(); BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5); WcsTask newTask = CoreMapper.Map(item); @@ -514,6 +534,7 @@ namespace Khd.Core.Wcs.Wcs newTask.floorNo = 1; newTask.taskStatus = 6; newTask.objid = StaticData.SnowId.NextId(); + dbContext.Add(newWmsProductOutstockDetail); dbContext.Remove(item); dbContext.Add(newTask); WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask); @@ -529,14 +550,11 @@ namespace Khd.Core.Wcs.Wcs WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault(); if (wmsRawOutstock != null) { - WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.Where(t => t.rawOutstockId == wmsRawOutstock.rawOutstockId && t.executeStatus == "1").FirstOrDefault(); - if (wmsRawOutstockDetail != null) - { + wmsRawOutstock.realOutstockAmount += 1; - wmsRawOutstockDetail.executeStatus = "2"; wmsRawOutstock.executeStatus = "2"; wmsRawOutstock.endTime = DateTime.Now; - wmsRawOutstockDetail.outstockTime = DateTime.Now; + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); SystemData.UnLockOutLocation(wmsBaseLocation, dbContext); wmsBaseLocation.returnFlag = "0"; @@ -545,13 +563,13 @@ namespace Khd.Core.Wcs.Wcs 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.WcsTask.Remove(item); dbContext.SaveChanges(); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); - } + } } else if (item.taskType == StaticTaskType.FiveHalfIn)//半成品入库 @@ -620,31 +638,58 @@ namespace Khd.Core.Wcs.Wcs Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + item.currPointNo + "," + item.endPointNo); _logger.Info("五楼Agv完成任务成功:" + item.ToJsonString()); var wmsRawOutStock = dbContext.WmsRawOutstock.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault(); - WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault(); - if (wmsRawOutStock != null && wmsRawOutstockDetail != null) + + WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); + WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).FirstOrDefault(); + + if (wmsRawOutStock != null && wmsRawStock != null) { + + wmsRawOutStock.realOutstockAmount += 1; - wmsRawOutstockDetail.executeStatus = "2"; wmsRawOutStock.executeStatus = "2"; wmsRawOutStock.endTime = DateTime.Now; - wmsRawOutstockDetail.outstockTime = DateTime.Now; - dbContext.Update(wmsRawOutStock); - dbContext.Update(wmsRawOutstockDetail); - WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); + + + + WmsRawOutstockDetail newWmsRawOutstockDetail = new WmsRawOutstockDetail(); + newWmsRawOutstockDetail.rawOutstockId = wmsRawOutStock.rawOutstockId; + newWmsRawOutstockDetail.taskCode = wmsRawOutStock.taskCode; + newWmsRawOutstockDetail.warehouseId = wmsRawOutStock.warehouseId; + newWmsRawOutstockDetail.locationCode = wmsRawStock.locationCode; + newWmsRawOutstockDetail.materialBarcode = wmsRawStock.instockBatch; + newWmsRawOutstockDetail.materialId = wmsRawStock.materialId; + MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == wmsRawStock.instockBatch).FirstOrDefault(); + if (mesBaseBarcodeInfo != null) + { + newWmsRawOutstockDetail.instockBatch = mesBaseBarcodeInfo.batchCode; + newWmsRawOutstockDetail.materialProductionDate = mesBaseBarcodeInfo.productionDate; + } + newWmsRawOutstockDetail.planAmount = wmsRawOutStock.outstockAmount; + newWmsRawOutstockDetail.outstockAmount = wmsRawOutStock.realOutstockAmount; + newWmsRawOutstockDetail.executeStatus = "2"; + newWmsRawOutstockDetail.outstockPerson = wmsRawOutStock.applyBy; + newWmsRawOutstockDetail.outstockTime = DateTime.Now; + newWmsRawOutstockDetail.outstockWay = "2"; + newWmsRawOutstockDetail.createBy = "WCS"; + newWmsRawOutstockDetail.createDate = DateTime.Now; + newWmsRawOutstockDetail.stackAmount = 1; + + + wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = null; wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateBy = "WCS"; SystemData.UnLockOutLocation(wmsBaseLocation, dbContext); - WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).FirstOrDefault(); - if (wmsRawStock != null) - { - dbContext.Remove(wmsRawStock); - dbContext.Update(wmsBaseLocation); - dbContext.Remove(item); - dbContext.SaveChanges(); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); - } + dbContext.Update(wmsRawOutStock); + dbContext.Add(newWmsRawOutstockDetail); + dbContext.Remove(wmsRawStock); + dbContext.Update(wmsBaseLocation); + dbContext.Remove(item); + dbContext.SaveChanges(); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); + } } else if (item.taskType == StaticTaskType.FiveRawSplitReturn)//柜体拆分到原材料 @@ -688,32 +733,11 @@ namespace Khd.Core.Wcs.Wcs updateDate = DateTime.Now, warehouseId = 511, }; - WmsRawInstock? WmsRawInstock = dbContext.WmsRawInstock.FirstOrDefault(t => t.materialBarCode == mesBasePalletInfo.materialBarcode && t.instockType =="2"); + WmsRawInstock? WmsRawInstock = dbContext.WmsRawInstock.FirstOrDefault(t => t.materialBarCode == mesBasePalletInfo.materialBarcode && t.instockType == "2"); WmsRawInstock.returnFlag = null; WmsRawInstock.executeStatus = "2"; WmsRawInstock.updateDate = DateTime.Now; - //WmsRawInstock wmsRawInstock = new WmsRawInstock() - //{ - // taskCode = item.taskCode, - // materialBarCode = mesBaseBarcodeInfo.barcodeInfo, - // materialBatchCode = mesBaseBarcodeInfo.batchCode, - // applyBy = "wcs", - // applyDate = System.DateTime.Now, - // purchaseOrderId = mesBaseBarcodeInfo.PurchaseOrderId, - - // beginTime = System.DateTime.Now, - // endTime = DateTime.Now, - // locationCode = wmsBaseLocation.locationCode, - // executeStatus = "2", - // instockAmount = 1, - // instockType = "2", - - // materialId = mesBaseBarcodeInfo.materialId, - // operationType = "3", - // palletInfoCode = mesBaseBarcodeInfo.palletInfoCode, - // poNo = mesBaseBarcodeInfo.poNo, - // warehouseId = 511 - //}; + SystemData.UnLockOutLocation(wmsBaseLocation, dbContext); dbContext.Update(WmsRawInstock); dbContext.Add(wmsRawStock); @@ -782,7 +806,7 @@ namespace Khd.Core.Wcs.Wcs executeStatus = "2", instockAmount = 1, instockType = "1", - + materialId = mesBaseBarcodeInfo.materialId, operationType = "3", palletInfoCode = mesBaseBarcodeInfo.palletInfoCode, diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 95ba64c..3d6bda1 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -759,6 +759,14 @@ namespace Khd.Core.Wcs.Wcs var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First(); WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode); + wmsProductOutstock.outstockQty++; + if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) + { + wmsProductOutstock.endTime = DateTime.Now; + wmsProductOutstock.executeStatus = "2"; + } + + WmsProductOutstockDetail newWmsProductOutstockDetail = new WmsProductOutstockDetail(); newWmsProductOutstockDetail.productOutstockId = wmsProductOutstock.productOutstockId; newWmsProductOutstockDetail.warehouseId = wmsProductOutstock.warehouseId; @@ -773,13 +781,7 @@ namespace Khd.Core.Wcs.Wcs newWmsProductOutstockDetail.beginTime = DateTime.Now; newWmsProductOutstockDetail.endTime = DateTime.Now; - wmsProductOutstock.outstockQty++; - if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) - { - wmsProductOutstock.endTime = DateTime.Now; - wmsProductOutstock.executeStatus = "2"; - } - + wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.containerCode = null; item.nextPointId = 2; diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs index 73d8396..1fb1cc6 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorLine.cs @@ -229,9 +229,10 @@ namespace Khd.Core.Wcs.Wcs } else { - //todo:没有空托盘 - Console.WriteLine(DateTime.Now + ":二楼码垛输送线没有空托盘"); - _logger.Info("二楼码垛输送线没有空托盘"); + //todo:没有空托盘超过十次预警报警 + Console.WriteLine(DateTime.Now + ":二楼码垛输送线没有空托盘,叫托盘失败!"); + _logger.Info("二楼码垛输送线没有空托盘,叫托盘失败!"); + Thread.Sleep(1000*60); } } } diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index d636295..60b5b43 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -667,7 +667,7 @@ namespace Khd.Core.Wcs.Wcs executeStatus = "2", instockAmount = 1, instockType = item.fromFloorNo == 1 ? "1" : "3", - + materialId = mesBaseBarcodeInfo.materialId, operationType = "3", palletInfoCode = mesBaseBarcodeInfo.palletInfoCode, @@ -712,42 +712,63 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation.updateBy = "WCS"; WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == item.orderId); - if (wmsRawOutstock != null) + WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault(); + + if (wmsRawOutstock != null && wmsRawStock != null) { - WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == wmsRawOutstock.rawOutstockId && t.executeStatus == "1"); - if (wmsRawOutstockDetail != null) + + wmsRawOutstock.realOutstockAmount += 1; + if (wmsRawOutstock.realOutstockAmount >= wmsRawOutstock.outstockAmount) { - wmsRawOutstockDetail.executeStatus = "2"; - wmsRawOutstockDetail.outstockTime = DateTime.Now; - WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault(); - if (wmsRawStock != null) - { - BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31); - endEquip.emptyCount = 1; - wmsRawOutstock.realOutstockAmount += 1; - if (wmsRawOutstock.realOutstockAmount >= wmsRawOutstock.outstockAmount) - { - wmsRawOutstock.endTime = DateTime.Now; - wmsRawOutstock.executeStatus = "2"; - } - SystemData.UnLockOutLocation(wmsBaseLocation, dbContext); - dbContext.Update(endEquip); - dbContext.Update(wmsRawOutstock); - dbContext.Remove(wmsRawStock); - dbContext.Update(wmsBaseLocation); - WcsTask wcsTask = CoreMapper.Map(item); - wcsTask.objid = StaticData.SnowId.NextId(); - wcsTask.taskStatus = 0; - wcsTask.useFlag = 0; - wcsTask.taskType = StaticTaskType.ThirdFlipToBin; - wcsTask.createBy = "WCS"; - wcsTask.createTime = DateTime.Now; - dbContext.Remove(item); - dbContext.Add(wcsTask); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); - dbContext.SaveChanges(); - } + wmsRawOutstock.endTime = DateTime.Now; + wmsRawOutstock.executeStatus = "2"; } + + + WmsRawOutstockDetail newWmsRawOutstockDetail = new WmsRawOutstockDetail(); + newWmsRawOutstockDetail.rawOutstockId = wmsRawOutstock.rawOutstockId; + newWmsRawOutstockDetail.taskCode = wmsRawOutstock.taskCode; + newWmsRawOutstockDetail.warehouseId = wmsRawOutstock.warehouseId; + newWmsRawOutstockDetail.locationCode = wmsRawStock.locationCode; + newWmsRawOutstockDetail.materialBarcode = wmsRawStock.instockBatch; + newWmsRawOutstockDetail.materialId = wmsRawStock.materialId; + MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == wmsRawStock.instockBatch).FirstOrDefault(); + if (mesBaseBarcodeInfo != null) + { + newWmsRawOutstockDetail.instockBatch = mesBaseBarcodeInfo.batchCode; + newWmsRawOutstockDetail.materialProductionDate = mesBaseBarcodeInfo.productionDate; + } + newWmsRawOutstockDetail.planAmount = wmsRawOutstock.outstockAmount; + newWmsRawOutstockDetail.outstockAmount = wmsRawOutstock.realOutstockAmount; + newWmsRawOutstockDetail.executeStatus = "2"; + newWmsRawOutstockDetail.outstockPerson = wmsRawOutstock.applyBy; + newWmsRawOutstockDetail.outstockTime = DateTime.Now; + newWmsRawOutstockDetail.outstockWay = "2"; + newWmsRawOutstockDetail.createBy = "WCS"; + newWmsRawOutstockDetail.createDate = DateTime.Now; + newWmsRawOutstockDetail.stackAmount = 1; + + BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31); + endEquip.emptyCount = 1; + + SystemData.UnLockOutLocation(wmsBaseLocation, dbContext); + dbContext.Update(endEquip); + dbContext.Update(wmsRawOutstock); + dbContext.Remove(wmsRawStock); + dbContext.Add(newWmsRawOutstockDetail); + dbContext.Update(wmsBaseLocation); + WcsTask wcsTask = CoreMapper.Map(item); + wcsTask.objid = StaticData.SnowId.NextId(); + wcsTask.taskStatus = 0; + wcsTask.useFlag = 0; + wcsTask.taskType = StaticTaskType.ThirdFlipToBin; + wcsTask.createBy = "WCS"; + wcsTask.createTime = DateTime.Now; + dbContext.Remove(item); + dbContext.Add(wcsTask); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); + dbContext.SaveChanges(); + } } else if (item.taskType == StaticTaskType.ThirdFlipToBin)//翻转机就到收集架 diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs index f5a5041..3e847ba 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs @@ -2061,7 +2061,7 @@ namespace Khd.Core.Wpf.Form List wmsRawStocks = dbContext.WmsRawStock .Where(t => txtInBarCode.Text == t.instockBatch) .Where(t => t.warehouseFloor == 5 && t.warehouseId == 512).ToList(); - if (wmsRawStocks.Count > 0) + if (wmsRawStocks.Count > 0 && material.batchFlag!="1") { HandyControl.Controls.MessageBox.Info($"该条码已入库!料箱号为{wmsRawStocks.First().palletInfoCode},库位号为{wmsRawStocks.First().locationCode}"); txtInBarCode.Text = string.Empty; @@ -2081,30 +2081,67 @@ namespace Khd.Core.Wpf.Form txtInScan.Text = string.Empty; return; } - var newRawStock = new WmsRawStock() - { - materialId = material.materialId, - supplierId = material.manufacturerId, - instockBatch = txtInBarCode.Text, - locationCode = container.locationCode, - stockType = "1", - palletInfoCode = container.containerCode, - totalAmount = material.batchFlag == "1" ? material.amount : 1, - activeFlag = "1", - occupyAmount = 0, - completeFlag = "1", - frozenAmount = 0, - instockDate = System.DateTime.Now, - rawStockId = Global.SnowId.NextId(), - saleOrderId = material.saleOrderId == null ? 0 : material.saleOrderId, - warehouseFloor = 5, - warehouseId = 512, - createBy = "扫描退库", - createDate = System.DateTime.Now, - safeFlag = material.safeFlag - }; - dbContext.WmsRawStock.Add(newRawStock); + decimal amount = decimal.Parse(txtInScan.Text); + wmsRawReturn.returnAmount += amount; + if(wmsRawReturn.returnAmount >= wmsRawReturn.planAmount) + { + wmsRawReturn.executeStatus = "2"; + wmsRawReturn.endTime = DateTime.Now; + } + + WmsRawReturnDetail ? wmsRawReturnDetail = new WmsRawReturnDetail(); + wmsRawReturnDetail.RawReturnId = (long)wmsRawReturn.rawReturnId; + wmsRawReturnDetail.LocationCode = container.locationCode; + wmsRawReturnDetail.MaterialBarcode = txtInBarCode.Text; + wmsRawReturnDetail.MaterialId = (long)material.materialId; + wmsRawReturnDetail.InstockBatch = material.batchCode; + wmsRawReturnDetail.MaterialProductionDate = material.productionDate; + wmsRawReturnDetail.PlanAmount = wmsRawReturn.planAmount; + wmsRawReturnDetail.ReturnAmount = wmsRawReturn.returnAmount; + wmsRawReturnDetail.ExecuteStatus = "2"; + wmsRawReturnDetail.ReturnAmount = wmsRawReturn.returnAmount; + wmsRawReturnDetail.ReturnPerson = "WPF"; + wmsRawReturnDetail.ReturnTime = DateTime.Now; + wmsRawReturnDetail.ReturnWay = "2"; + wmsRawReturnDetail.CreateBy = "WPF"; + wmsRawReturnDetail.CreateDate = DateTime.Now; + + + if (wmsRawStocks.Count > 0) + { // 批次条码并且有库存 + var newRawStock = wmsRawStocks.First(); + newRawStock.totalAmount += amount; + newRawStock.updateDate = DateTime.Now; + dbContext.WmsRawStock.Update(newRawStock); + } + else + { // 无库存 + var newRawStock = new WmsRawStock() + { + materialId = material.materialId, + supplierId = material.manufacturerId, + instockBatch = txtInBarCode.Text, + locationCode = container.locationCode, + stockType = "1", + palletInfoCode = container.containerCode, + totalAmount = material.batchFlag == "1" ? amount : 1, + activeFlag = "1", + occupyAmount = 0, + completeFlag = "1", + frozenAmount = 0, + instockDate = System.DateTime.Now, + rawStockId = Global.SnowId.NextId(), + saleOrderId = material.saleOrderId == null ? 0 : material.saleOrderId, + warehouseFloor = 5, + warehouseId = 512, + createBy = "扫描退库", + createDate = System.DateTime.Now, + safeFlag = material.safeFlag + }; + dbContext.WmsRawStock.Add(newRawStock); + } + dbContext.SaveChanges(); HandyControl.Controls.MessageBox.Success("入库成功!"); txtInBarCode.Text = string.Empty;