From 1d044540ee1b7041c7e89bdfe6d1339c99e80a4e Mon Sep 17 00:00:00 2001 From: 刘磊 <1161824510@qq.com> Date: 星期三, 08 一月 2025 14:41:16 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/BaiBuLiKu --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs | 251 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 151 insertions(+), 100 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs index 8113250..1864fd5 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs @@ -5,6 +5,8 @@ using System.Threading.Tasks; using WIDESEA_Common; using WIDESEA_Common.CustomModels; + +//using WIDESEA_Common.CustomModels; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.Const; using WIDESEA_DTO.MOM; @@ -161,105 +163,121 @@ private async Task<Dt_Task> CreateInToOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager) { - //if (stationManager.stationType != 5) throw new Exception("閿欒鐨勮皟鍙�"); - - input.EquiCodeMOM = "24MEJQ11-1006-1"; - - // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� - TrayCellsStatusDto trayCells = new TrayCellsStatusDto() + try { - Software = "WMS", - TrayBarcode = input.PalletCode, - //EquipmentCode = "EQ_CWJZ01" - EquipmentCode = input.EquiCodeMOM - }; + //if (stationManager.stationType != 5) throw new Exception("閿欒鐨勮皟鍙�"); - // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� - WebResponseContent content = await GetTrayCellStatusAsync(trayCells); - // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content - if (!content.Status) throw new Exception(content.Message); + input.EquiCodeMOM = "24MEJQ11-1006-1"; - // 娣诲姞缁勭洏淇℃伅 - // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄 - var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); - if (result.SerialNos.Count <= 0) - { - ConsoleHelper.WriteErrorLine(result.MOMMessage); - if (stationManager.stationType != 3) + // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� + TrayCellsStatusDto trayCells = new TrayCellsStatusDto() { - var taskNG = new Dt_Task + Software = "WMS", + TrayBarcode = input.PalletCode, + //EquipmentCode = "EQ_CWJZ01" + EquipmentCode = input.EquiCodeMOM + }; + + // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� + WebResponseContent content = await GetTrayCellStatusAsync(trayCells); + // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content + if (!content.Status) throw new Exception(content.Message); + + // 缁勭洏淇℃伅 + // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄 + var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); + if (result.SerialNos.Count <= 0) + { + ConsoleHelper.WriteErrorLine(result.MOMMessage); + if (stationManager.stationType != 3) { - CurrentAddress = input.Position, - Grade = 1, - Roadway = input.Roadways, - TargetAddress = stationManager.stationNGLocation, - Dispatchertime = DateTime.Now, - MaterialNo = "", - NextAddress = stationManager.stationNGChildCode, - OrderNo = null, - PalletCode = input.PalletCode, - SourceAddress = stationManager.stationLocation, - TaskState = (int)TaskInStatusEnum.Line_InFinish, - TaskType = (int)TaskOutboundTypeEnum.InToOut, - TaskNum = await BaseDal.GetTaskNo(), - Creater = "Systeam" - }; - return taskNG; - } - else - { - return null; - } - } - - // 澶勭悊寮傚父鐢佃姱鎯呭喌 - var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList(); - if (serialNosError.Count > 0) - { - if (stationManager.stationType != 3) - { - var taskNG = new Dt_Task + var taskNG = new Dt_Task + { + CurrentAddress = input.Position, + Grade = 3, + Roadway = input.Roadways, + TargetAddress = stationManager.stationNGLocation, + Dispatchertime = DateTime.Now, + MaterialNo = "", + NextAddress = stationManager.stationNGChildCode, + OrderNo = null, + PalletCode = input.PalletCode, + SourceAddress = stationManager.stationLocation, + TaskState = (int)TaskInStatusEnum.Line_InFinish, + TaskType = (int)TaskOutboundTypeEnum.InToOut, + TaskNum = await BaseDal.GetTaskNo(), + Creater = "Systeam" + }; + return taskNG; + } + else { - CurrentAddress = input.Position, - Grade = 1, - Roadway = input.Roadways, - TargetAddress = stationManager.stationNGLocation, - Dispatchertime = DateTime.Now, - MaterialNo = "", - NextAddress = stationManager.stationNGChildCode, - OrderNo = null, - PalletCode = input.PalletCode, - SourceAddress = stationManager.stationLocation, - TaskState = (int)TaskInStatusEnum.Line_InFinish, - TaskType = (int)TaskOutboundTypeEnum.OutNG, - TaskNum = await BaseDal.GetTaskNo(), - Creater = "Systeam" - }; - return taskNG; + //鏃犵數鑺� 鈫� 褰撶┖妗嗭紵 杩樻槸杩斿洖寮傚父锛� + return null; + } } + + // 澶勭悊寮傚父鐢佃姱鎯呭喌 + var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList(); + if (serialNosError.Count > 0) + { + if (stationManager.stationType != 3) + { + var taskNG = new Dt_Task + { + CurrentAddress = input.Position, + Grade = 1, + Roadway = input.Roadways, + TargetAddress = stationManager.stationNGLocation, + Dispatchertime = DateTime.Now, + MaterialNo = "", + NextAddress = stationManager.stationNGChildCode, + OrderNo = null, + PalletCode = input.PalletCode, + SourceAddress = stationManager.stationLocation, + TaskState = (int)TaskInStatusEnum.Line_InFinish, + TaskType = (int)TaskOutboundTypeEnum.InToOut, + TaskNum = await BaseDal.GetTaskNo(), + Creater = "Systeam" + }; + return taskNG; + } + else + { + Console.WriteLine($"绔欏彴{stationManager.stationChildCode}MOM杩斿洖鐢佃姱寮傚父:{result.MOMMessage}"); + return null; + } + } + //else + //{ + // throw new Exception($"绔欏彴{stationManager.stationChildCode}MOM杩斿洖鐢佃姱寮傚父:{result.MOMMessage}"); + //} + + var targetStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == stationManager.stationPLC && x.Roadway == stationManager.Roadway && x.stationType == 2); + + var task = new Dt_Task + { + CurrentAddress = input.Position, + Grade = 3, + Roadway = input.Roadways, + TargetAddress = targetStation.stationLocation, + Dispatchertime = DateTime.Now, + MaterialNo = "", + NextAddress = input.Roadways, + OrderNo = null, + PalletCode = input.PalletCode, + SourceAddress = stationManager.stationLocation, + TaskState = (int)TaskInStatusEnum.Line_InFinish, + TaskType = (int)TaskOutboundTypeEnum.InToOut, + TaskNum = await BaseDal.GetTaskNo(), + Creater = "Systeam" + }; + return task; } - - var targetStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == stationManager.stationPLC && x.Roadway == stationManager.Roadway && x.stationType == 2); - - var task = new Dt_Task + catch (Exception ex) { - CurrentAddress = input.Position, - Grade = 1, - Roadway = input.Roadways, - TargetAddress = targetStation.stationLocation, - Dispatchertime = DateTime.Now, - MaterialNo = "", - NextAddress = input.Roadways, - OrderNo = null, - PalletCode = input.PalletCode, - SourceAddress = stationManager.stationLocation, - TaskState = (int)TaskInStatusEnum.Line_InFinish, - TaskType = (int)TaskOutboundTypeEnum.InToOut, - TaskNum = await BaseDal.GetTaskNo(), - Creater = "Systeam" - }; - - return task; + throw new Exception(ex.Message); + } } #endregion 鐩存帴鍑哄簱浠诲姟 @@ -285,6 +303,7 @@ if (stationManager.stationType == 1) { + #region // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� TrayCellsStatusDto trayCells = new TrayCellsStatusDto() { @@ -350,6 +369,7 @@ ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴� ////var processResponse = await GetProcessResponseAsync(process, input.Position); var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); + #endregion } var task = new Dt_Task @@ -369,10 +389,13 @@ TaskNum = await BaseDal.GetTaskNo(), Creater = "Systeam" }; - ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + locationInfo.LocationStatus.ToString()); + int lastStatus = locationInfo.LocationStatus; + ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + lastStatus.ToString()); locationInfo.LocationStatus = (int)LocationEnum.FreeDisable; ConsoleHelper.WriteSuccessLine($"淇敼鍚庯細" + locationInfo.LocationStatus.ToString()); await UpdateLocationAsync(locationInfo); + + _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum); return task; } @@ -519,7 +542,8 @@ { //娣诲姞鍘嗗彶 var taskHty = CreateHistoricalTask(task); - + // 娣诲姞鍘嗗彶浠诲姟 + var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; //鍒犻櫎浠诲姟 BaseDal.DeleteData(task); @@ -576,7 +600,7 @@ var Epmtytask = new Dt_Task { CurrentAddress = input.Position, - Grade = 3, //浼樺厛澶勭悊寮傚父鎺掑嚭鍙g殑浠诲姟 闃叉姝e父闇�鎺掑嚭寮傚父鍙g殑浠诲姟鍫电嚎 + Grade = 4, //浼樺厛澶勭悊寮傚父鎺掑嚭鍙g殑浠诲姟 闃叉姝e父闇�鎺掑嚭寮傚父鍙g殑浠诲姟鍫电嚎 Roadway = input.Roadways, TargetAddress = EmptylocationInfo.LocationCode, Dispatchertime = DateTime.Now, @@ -653,10 +677,15 @@ var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); - ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + locationInfo.LocationStatus.ToString()); + int lastStatus = locationInfo.LocationStatus; + + ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + lastStatus.ToString()); locationInfo.LocationStatus = (int)LocationEnum.FreeDisable; ConsoleHelper.WriteSuccessLine($"淇敼鍚庯細" + locationInfo.LocationStatus.ToString()); await UpdateLocationAsync(locationInfo); + + _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum); + return task; } catch (Exception ex) @@ -765,10 +794,13 @@ var content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (content.Status) { + int lastStatus = item.LocationInfo.LocationStatus; await BaseDal.AddDataAsync(task); // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢� item.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; await _locationRepository.UpdateDataAsync(item.LocationInfo); + + _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(item.LocationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum); } } } @@ -814,6 +846,7 @@ WMSTaskDTO wmsTask = CreateTaskDTO(task); // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢� + int lastStatus = location.LocationStatus; stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; location.LocationStatus = (int)LocationEnum.Distribute; await _unitOfWorkManage.UseTranAsync(async () => @@ -822,6 +855,8 @@ await _locationRepository.UpdateDataAsync(stockInfo.LocationInfo); await _locationRepository.UpdateDataAsync(location); }); + + _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum); // 杩斿洖鎴愬姛鍝嶅簲 return content.OK(data: wmsTask); @@ -844,20 +879,28 @@ WebResponseContent content = new WebResponseContent(); try { - Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position); + Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call"); - DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(X => X.IsFull && X.AreaCode == "CWSC3" && X.ProductionLine == station.productLine); + var stockInfo = _stockInfoRepository.Db.Queryable<DtStockInfo>() + .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo + .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true) // 杩囨护鏉′欢 + .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) // 杩囨护鏉′欢 + .OrderBy(x => x.OutboundTime) // 鎺掑簭 + .First(); // 鑾峰彇绗竴涓厓绱� + + //DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(X => X.IsFull && X.AreaCode == "CWSC3" && X.ProductionLine == station.productLine); if (stockInfo == null) throw new Exception("搴撳唴鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�"); - Dt_StationManager OutStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1016" && x.stationType == 10); + DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.AreaId == 5 && x.LocationCode == stockInfo.LocationCode); + Dt_StationManager OutStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1016" && x.stationType == 10 && x.Roadway == locationInfo.RoadwayNo && x.stationStatus == "1"); // 鍒涘缓鏂颁换鍔″疄渚� var task = new Dt_Task { - CurrentAddress = stockInfo.LocationInfo.RoadwayNo, + CurrentAddress = stockInfo.LocationCode, Grade = 1, - Roadway = stockInfo.LocationInfo.RoadwayNo, + Roadway = locationInfo.RoadwayNo, TargetAddress = json.Position, Dispatchertime = DateTime.Now, MaterialNo = "", @@ -873,11 +916,19 @@ WMSTaskDTO taskDTO = CreateTaskDTO(task); + int lastStatus = locationInfo.LocationStatus; + + BaseDal.AddData(task); + stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; + _locationRepository.UpdateData(stockInfo.LocationInfo); + + _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(stockInfo.LocationInfo, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum); return content.OK(data: taskDTO); } catch (Exception ex) { + Console.WriteLine($"CW3鑷冲寘瑁呭嚭搴撳紓甯�:{ex.ToString()}"); return content.Error($"澶辫触锛歿ex.Message}"); } } @@ -895,7 +946,7 @@ if (emergencyTask == null) throw new Exception("鐏鍙傛暟涓虹┖"); - DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == emergencyTask.row && x.Column == emergencyTask.column && x.Layer == emergencyTask.layer && x.RoadwayNo == emergencyTask.Roadway); + DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == emergencyTask.row && x.Column == emergencyTask.column && x.Layer == emergencyTask.layer && x.AreaId == emergencyTask.zone); if (locationInfo == null) { throw new Exception("鏈煡搴撲綅"); -- Gitblit v1.9.3