From bb56b2b6f21acb7c69c02585e5bc534d2f67715f Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 27 三月 2025 17:13:35 +0800 Subject: [PATCH] WMS首页优化,WCS优化AGV和产线、输送线交互逻辑 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ProductionLine.cs | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 157 insertions(+), 12 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ProductionLine.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ProductionLine.cs" index 13fe744..d7ac7e0 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ProductionLine.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ProductionLine.cs" @@ -1,14 +1,14 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +锘縰sing Magicodes.IE.Core; +using MailKit.Search; +using System; using System.Threading.Tasks; -using WIDESEA_Core.Enums; using WIDESEA_Core; +using WIDESEA_Core.Enums; +using WIDESEA_Core.Helper; +using WIDESEA_DTO.Inbound; using WIDESEA_DTO.WCSInfo; using WIDESEA_Model.Models; using WIDESEAWCS_DTO.WCSInfo; -using WIDESEA_Core.Helper; namespace WIDESEA_TaskInfoService { @@ -25,14 +25,159 @@ WebResponseContent content = new WebResponseContent(); try { - (bool, string) result = CheckRequestInbound(productionlineDTO.Station, productionlineDTO.TrayBarcode, false); - if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); - var task = BaseDal.QueryFirst(x => x.PalletCode == productionlineDTO.TrayBarcode); - if (task != null && task.TaskType == TaskTypeEnum.Inbound.ObjToInt()) - return content.OK(data: task); + #region MyRegion + Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(productionlineDTO.Barcode); + if (stockInfo != null) throw new Exception($"鎵樼洏銆恵productionlineDTO.Barcode}銆戝凡瀛樺湪搴撳瓨淇℃伅"); + stockInfo = new Dt_StockInfo(); + stockInfo.Details = new List<Dt_StockInfoDetail>(); + #region MyRegion + Dt_InboundOrderDetail inboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == productionlineDTO.batchNo); + if (inboundOrderDetail == null) + throw new Exception($"鏈壘鍒版壒鍙枫�恵productionlineDTO.batchNo}銆戠殑鍏ュ簱璇︽儏"); + if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) + throw new Exception($"鎵瑰彿銆恵productionlineDTO.batchNo}銆戠粍鐩樻暟閲忚秴鍑�"); + Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.Id == inboundOrderDetail.OrderId); + if (inboundOrder == null) throw new Exception($"鏈壘鍒版壒鍙枫�恵productionlineDTO.batchNo}銆戠殑鍏ュ簱澶磋〃"); + inboundOrder.Details = new List<Dt_InboundOrderDetail>() { inboundOrderDetail }; + #endregion + #region MyRegion + //var OrderNo = productionlineDTO.batchNo.Split('T')[0]; + //Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.GetInboundOrder(OrderNo); + //if (inboundOrder == null) throw new Exception($"鏈壘鍒板叆搴撳崟銆恵OrderNo}銆�"); + //Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == productionlineDTO.batchNo); + //if (inboundOrderDetail == null) throw new Exception($"鏈壘鍒版壒鍙枫�恵productionlineDTO.batchNo}銆戠殑鍏ュ簱璇︽儏"); + //if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) throw new Exception($"鎵瑰彿銆恵productionlineDTO.batchNo}銆戠粍鐩樻暟閲忚秴鍑�"); + #endregion + + Dt_Task dt_Task = new Dt_Task() + { + CurrentAddress = productionlineDTO.stationCode, + NextAddress = "SC01", + SourceAddress = productionlineDTO.stationCode, + TargetAddress = "SC01", + Creater = "System", + PalletCode = productionlineDTO.Barcode, + Roadway = "SC01", + OrderNo = inboundOrder.OrderNo, + TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), + TaskState = InTaskStatusEnum.InNew.ObjToInt(), + TaskType = TaskTypeEnum.Inbound.ObjToInt(), + //TaskType = productionlineDTO.traytype == 2 ? TaskTypeEnum.PalletInbound.ObjToInt() : TaskTypeEnum.PalletReturnInbound.ObjToInt(), + CreateDate = DateTime.Now, + Dispatchertime = DateTime.Now, + }; + + content = _stockService.StockInfoService.AddStockInfo(ref stockInfo, ref inboundOrder, productionlineDTO); + if (!content.Status) throw new Exception(content.Message); + Db.Ado.BeginTran(); + _inboundService.InbounOrderService.UpdateDataWithDetail(inboundOrder); + _stockService.StockInfoService.AddMaterielGroup(stockInfo); + AddData(dt_Task); + content.OK(data: dt_Task); + Db.Ado.CommitTran(); + #endregion + #region MyRegion + //switch (productionlineDTO.traytype) + //{ + // case 1://鏀剧┖鎵� + // case 3://鏀剧┖鐩� + // //case 5://鏀炬弧鐩� + // { + // //鏌ユ壘鐗╂枡鎵�鏈夊簱瀛� + // var stockInfos = _stockService.StockInfoService.Repository.GetStockInfos(productionlineDTO.traytype.ToString()); + // //鏌ユ壘鍏堝叆鐗╂枡璐т綅鏈�鍚庡叆搴撶墿鏂� + // var stockInfo = stockInfos.Where(x => x.LocationCode == stockInfos.OrderBy(x => x.InDate).FirstOrDefault()?.LocationCode).OrderByDescending(x => x.InDate).FirstOrDefault(); + // if (stockInfo == null) throw new Exception($"鏃犵墿鏂欑紪鍙枫�恵productionlineDTO.traytype}銆戠殑搴撳瓨"); + // var location = _basicService.LocationInfoService.GetLocation(stockInfo.LocationCode); + // #region 鐢熸垚鍑哄簱浠诲姟 + // Dt_Task dt_Task = new Dt_Task() + // { + // CurrentAddress = stockInfo.LocationCode, + // NextAddress = "SC01", + // SourceAddress = stockInfo.LocationCode, + // TargetAddress = productionlineDTO.stationCode, + // Creater = "System", + // PalletCode = stockInfo.PalletCode, + // OrderNo = null, + // Roadway = "SC01", + // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), + // TaskState = OutTaskStatusEnum.OutNew.ObjToInt(), + // TaskType = productionlineDTO.traytype == 1 ? TaskTypeEnum.PalletOutbound.ObjToInt() : TaskTypeEnum.PalletFillOutbound.ObjToInt(), + // IsPickPlace = location.MaxQty - location.CurrentQty == 0, + // CreateDate = DateTime.Now, + // Dispatchertime = DateTime.Now, + // }; + // #endregion + // location.CurrentQty--; + // location.LocationStatus = LocationStatusEnum.Outbounding.ObjToInt(); + // stockInfo.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + // stockInfo.Details.FirstOrDefault().Status = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + + // Db.Ado.BeginTran(); + // AddData(dt_Task); + // _basicService.LocationInfoService.UpdateData(location); + // _stockService.StockInfoService.Repository.UpdateDataWithDetail(stockInfo); + // content.OK(data: dt_Task); + // Db.Ado.CommitTran(); + // } + // break; + // case 2://鍙栫┖鎵� + // case 4://鍙栨弧鐩� + // case 6://鍙栫┖鐩� + // { + // Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(productionlineDTO.Barcode); + // if (stockInfo != null) throw new Exception($"鎵樼洏銆恵productionlineDTO.Barcode}銆戝凡瀛樺湪搴撳瓨淇℃伅"); + // productionlineDTO.QtySum = Array.ConvertAll(productionlineDTO.productQty.Split(","), s => decimal.Parse(s)).Sum();//鍏ュ簱鎬绘暟 + // stockInfo = new Dt_StockInfo(); + // stockInfo.Details = new List<Dt_StockInfoDetail>(); + // Dt_InboundOrder inboundOrder = null; + // #region 鐢熸垚鍏ュ簱浠诲姟 + // Dt_Task dt_Task = new Dt_Task() + // { + // CurrentAddress = productionlineDTO.stationCode, + // NextAddress = "SC01", + // SourceAddress = productionlineDTO.stationCode, + // TargetAddress = "SC01", + // Creater = "System", + // PalletCode = productionlineDTO.Barcode, + // Roadway = "SC01", + // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), + // TaskState = InTaskStatusEnum.InNew.ObjToInt(), + // TaskType = productionlineDTO.traytype == 2 ? TaskTypeEnum.PalletInbound.ObjToInt() : TaskTypeEnum.PalletReturnInbound.ObjToInt(), + // CreateDate = DateTime.Now, + // Dispatchertime = DateTime.Now, + // }; + // #endregion + // if (productionlineDTO.traytype == 4) + // { + // var OrderNo = productionlineDTO.batchNo.Split('T')[0]; + // inboundOrder = _inboundService.InbounOrderService.GetInboundOrder(OrderNo); + // if (inboundOrder == null) throw new Exception($"鏈壘鍒板叆搴撳崟銆恵OrderNo}銆�"); + // Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == productionlineDTO.batchNo); + // if (inboundOrderDetail == null) throw new Exception($"鏈壘鍒版壒鍙枫�恵productionlineDTO.batchNo}銆戠殑鍏ュ簱璇︽儏"); + // if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) throw new Exception($"鎵瑰彿銆恵productionlineDTO.batchNo}銆戠粍鐩樻暟閲忚秴鍑�"); + + // dt_Task.OrderNo = OrderNo; + // dt_Task.TaskType = TaskTypeEnum.Inbound.ObjToInt(); + // } + // content = _stockService.StockInfoService.AddStockInfo(ref stockInfo, ref inboundOrder, productionlineDTO); + // if (!content.Status) throw new Exception(content.Message); + // Db.Ado.BeginTran(); + // if (inboundOrder != null) _inboundService.InbounOrderService.UpdateDataWithDetail(inboundOrder); + // _stockService.StockInfoService.AddMaterielGroup(stockInfo); + // AddData(dt_Task); + // content.OK(data: dt_Task); + // Db.Ado.CommitTran(); + // } + // break; + // default: + // throw new Exception("鏈畾涔夋墭鐩樼被鍨�"); + //} + #endregion } catch (Exception ex) { + Db.Ado.RollbackTran(); content.Error(ex.Message); } return content; @@ -67,7 +212,7 @@ PalletCode = lineDTO.Barcode, OrderNo = StockInfoDetails.Count() == 1 ? StockInfoDetails.First().OrderNo : null, Roadway = "SC01", - TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), + TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), TaskState = InTaskStatusEnum.InNew.ObjToInt(), TaskType = TaskTypeEnum.Inbound.ObjToInt(), }; -- Gitblit v1.9.3