From 734f49c3f74e4a46cfb5892ce60dbf1bb86e74ab Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期二, 22 七月 2025 19:14:39 +0800 Subject: [PATCH] 出入库流程 --- WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 137 +++++++++++++++++++++++++++++---------------- 1 files changed, 88 insertions(+), 49 deletions(-) diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs index 77ca387..9cc9396 100644 --- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs +++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs @@ -71,6 +71,7 @@ private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IStockRepository _stockRepository; private readonly IBasicService _basicService; + private readonly IBasicRepository _basicRepository; private readonly IOutboundService _outboundService; private readonly IInboundService _inboundService; private readonly IInboundOrderDetailService _inboundOrderDetailService; @@ -86,9 +87,10 @@ private readonly IOutboundOrderDetail_HtyService _outboundOrderDetail_HtyService; private readonly IPalletTypeInfoRepository _palletTypeInfoRepository; private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository; + private readonly IStockInfoDetailRepository _stockInfoDetailRepository; public ITaskRepository Repository => BaseDal; - public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository) : base(BaseDal) + public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal) { _mapper = mapper; _stockRepository = stockRepository; @@ -107,6 +109,8 @@ _outboundOrder_HtyService = outboundOrder_HtyService; _outboundOrderDetail_HtyService = outboundOrderDetail_HtyService; _outboundOrderDetailRepository = outboundOrderDetailRepository; + _basicRepository = basicRepository; + _stockInfoDetailRepository = stockInfoDetailRepository; } public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"]; @@ -171,32 +175,67 @@ /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> /// <returns>杩斿洖澶勭悊缁撴灉</returns> - public WebResponseContent TaskCompleted(int taskNum) + public async Task<WebResponseContent> TaskCompleted(int taskNum) { try { - Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); + Dt_Task task = await Repository.QueryFirstAsync(x => x.TaskNum == taskNum); if (task == null) { - return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔′俊鎭�"); + return await Task.FromResult(WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔′俊鎭�")); } - MethodInfo? methodInfo = GetType().GetMethod(((TaskTypeEnum)task.TaskType) + "TaskCompleted"); - if (methodInfo != null) + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { - WebResponseContent? responseContent = (WebResponseContent?)methodInfo.Invoke(this, new object[] { task }); - if (responseContent != null) - { - return responseContent; - } + return await Task.FromResult(InboundTaskCompleted(taskNum)); } - return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔$被鍨嬪搴斾笟鍔″鐞嗛�昏緫"); + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + return await Task.FromResult(OutboundTaskCompleted(taskNum)); + } + //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) + //{ + // return await Task.FromResult(RelocationTaskCompleted(task)); + //} + else + { + return await Task.FromResult(WebResponseContent.Instance.Error($"鏈壘鍒拌绫诲瀷浠诲姟,浠诲姟绫诲瀷:{task.TaskType}")); + } + } + catch (Exception ex) + { + return await Task.FromResult(WebResponseContent.Instance.Error(ex.Message)); + } + } + + + + /// <summary> + /// 淇敼浠诲姟鐘舵�� + /// </summary> + /// <param name="task"></param> + /// <returns></returns> + public WebResponseContent UpdateTaskInfo(WCSTaskDTO task) + { + try + { + Dt_Task wmsTask = BaseDal.QueryFirst(x => x.TaskNum == task.TaskNum); + if (wmsTask != null) + { + wmsTask.TaskStatus = task.TaskState; + wmsTask.CurrentAddress = task.CurrentAddress; + wmsTask.NextAddress = task.NextAddress; + wmsTask.Dispatchertime = task.Dispatchertime; + BaseDal.UpdateData(wmsTask); + } + return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } - } + + public WebResponseContent UpdateTaskStatus(int taskNum, int tasktype) { WebResponseContent content = new WebResponseContent(); @@ -235,7 +274,7 @@ Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault(x => x.StockId == stockInfo.Id); List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.Repository.LocationCodesGetStockInfos(new List<string> { stockInfo.LocationCode }).Where(x => x.StockStatus == (int)StockStatusEmun.宸插叆搴�.ObjToInt()).ToList(); - if (task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt()) + if (task.TaskType == TaskTypeEnum.Inbound.ObjToInt()) { stockInfo.SerialNumber = stockInfos.Count + 1; stockInfo.InDate = DateTime.Now; @@ -293,7 +332,7 @@ _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail); //_recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum); Db.Ado.CommitTran(); - SendInboundInfoToWMS(task, inboundOrder, stockInfoDetail); + SendInboundInfoToWMS(task, inboundOrder, stockInfo); #endregion } catch (Exception ex) @@ -444,11 +483,11 @@ // 鏇存柊鍏ュ簱鍗� UpdateInboundOrder(inboundOrder, inboundOrderDetail); - // 濡傛灉鏄渶鍚庝竴鏉℃槑缁嗭紝澶勭悊WMS鍥炰紶 - if (inboundOrder.Details.Count == 1) + // 鍗曟嵁鏁伴噺鍏ㄩ儴涓婃灦瀹屾垚锛屽鐞哤MS鍥炰紶 + if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) { var stockInfoDetail = stockInfo.Details.FirstOrDefault(); - SendInboundInfoToWMS(task, inboundOrder, stockInfoDetail); + SendInboundInfoToWMS(task, inboundOrder, stockInfo); } _unitOfWorkManage.CommitTran(); @@ -465,7 +504,7 @@ int lastStatus, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDetail) { // 濡傛灉鏄渶鍚庝竴鏉℃槑缁� - if (inboundOrder.Details.Count == 1) + if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) { try { @@ -560,53 +599,53 @@ } } - private void SendInboundInfoToWMS(Dt_Task task, Dt_InboundOrder inboundOrder, Dt_StockInfoDetail stockInfoDetail) + private void SendInboundInfoToWMS(Dt_Task task, Dt_InboundOrder inboundOrder, Dt_StockInfo stockInfo) { - if (stockInfoDetail == null) return; + List<Dt_StockInfoDetail> dt_StockInfo = _stockInfoDetailRepository.QueryData(x => x.BatchNo == stockInfo.BatchNo).ToList(); + if (dt_StockInfo.Count == 0) return; var houseInboundPassBack = new HouseInboundPassBack { ApiType = "AsnController", Method = "AsrsGroudingAsn", Parameters = new List<HouseInboundPassBack.data> + { + new HouseInboundPassBack.data { - new HouseInboundPassBack.data + Value = new List<data.data1> { - Value = new List<data.data1> + new data.data1 { - new data.data1 + AsnNo = task.OrderNo, + InWarehouse = task.Roadway, + TransactionCode = inboundOrder.TransactionCode, + InoutType = inboundOrder.OrderType, + OrderType = inboundOrder.InoutType, + // 閬嶅巻鎵�鏈夊簱瀛樻槑缁嗭紝娣诲姞鍒� DetailList + DetailList = dt_StockInfo.Select(d => new data.data1.Inbound { - AsnNo = task.OrderNo, - InWarehouse = task.Roadway, - TransactionCode = inboundOrder.TransactionCode, - InoutType = inboundOrder.OrderType, - OrderType = inboundOrder.InoutType, - DetailList = new List<data.data1.Inbound> - { - new data.data1.Inbound - { - LinId = stockInfoDetail.LinId, - MaterielCode = stockInfoDetail.MaterielCode, - OrderQuantity = stockInfoDetail.StockQuantity, - BatchNo = stockInfoDetail.BatchNo, - FinishQty = stockInfoDetail.StockQuantity, - LocationName = task.TargetAddress - } - } - } + LinId = d.LinId, + MaterielCode = d.MaterielCode, + OrderQuantity = d.StockQuantity, + BatchNo = d.BatchNo, + LPNNo = task.PalletCode, + FinishQty = d.StockQuantity, + LocationName = task.TargetAddress + }).ToList() } } } + } }; var authResult = AuthenticateWithWMS(); if (authResult.IsSuccess) { houseInboundPassBack.Context = new Dictionary<string, string> - { - { "Ticket", authResult.Ticket }, - { "InvOrgId", authResult.InvOrgId } - }; + { + { "Ticket", authResult.Ticket }, + { "InvOrgId", authResult.InvOrgId } + }; HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskin, houseInboundPassBack, "绔嬪簱鍏ュ簱鏁伴噺鍥炰紶WMS"); } @@ -728,15 +767,15 @@ ApiType = "AuthenticationController", Parameters = new List<Parameter> { - new Parameter { Value = "LKAdmin" }, - new Parameter { Value = "LKAdmin" } + new Parameter { Value = "LK-Admin" }, + new Parameter { Value = "LK-Admin" } }, Method = "Login", }; var response = HttpHelper.Post<WebResponseContent>(ReceiveWMSTaskAUT, authentication, "鐧诲綍WMS璐﹀彿"); - if (response.Status && response.Context != null) + if (response.Context != null) { return (true, response.Context["Ticket"].ToString(), response.Context["InvOrgId"].ToString()); } -- Gitblit v1.9.3