From 222d2040c2a5e958b5fbd0b7047a8e802ec14288 Mon Sep 17 00:00:00 2001 From: 刘磊 <1161824510@qq.com> Date: 星期六, 23 十一月 2024 14:42:34 +0800 Subject: [PATCH] 一大堆 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs | 399 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 303 insertions(+), 96 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 58269a9..93021c6 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 @@ -2,6 +2,8 @@ using Mapster; using Masuit.Tools; using Masuit.Tools.Models; +using System.Diagnostics; +using WIDESEA_DTO; using WIDESEA_DTO.MOM; using WIDESEA_DTO.WMS; using WIDESEA_IStorageBasicRepository; @@ -10,13 +12,14 @@ using WIDESEA_StorageBasicRepository; using WIDESEA_StorageTaskRepository; using WIDESEA_StoragIntegrationServices; +using WIDESEAWCS_Model.Models; namespace WIDESEA_StorageOutTaskServices; public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService { - //#region 鍑哄簱浠诲姟瀹屾垚 + #region 鍑哄簱浠诲姟瀹屾垚 //public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock) @@ -145,7 +148,7 @@ // } //} - //#endregion 鍑哄簱浠诲姟瀹屾垚 + #endregion 鍑哄簱浠诲姟瀹屾垚 #region 绉诲簱浠诲姟瀹屾垚 @@ -374,7 +377,7 @@ PalletCode = task.PalletCode, RoadWay = task.Roadway, SourceAddress = task.SourceAddress, - TargetAddress = task.Roadway, + TargetAddress = task.TargetAddress, TaskState = task.TaskState.Value, Id = 0, TaskType = task.TaskType, @@ -384,6 +387,201 @@ } // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� + //TrayCellsStatusDto trayCells = new TrayCellsStatusDto() + //{ + // Software = "WMS", + // TrayBarcode = input.PalletCode, + // //EquipmentCode = "EQ_CWJZ01" + // EquipmentCode = input.EquiCodeMOM + //}; + + //// 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� + //content = await GetTrayCellStatusAsync(trayCells); + //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content + //if (!content.Status) return content; + + //// 娣诲姞缁勭洏淇℃伅 + //// 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄 + //var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); + //if (result.SerialNos.Count <= 0) + // return content.Error(result.MOMMessage); + + //Console.WriteLine(result); + //// TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭� + ////var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); + ////if (productions.Count <= 0) + //// return content.Error("鏂欐灞炴�т笉瀛樺湪"); + + //// 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭� + + //var boxing = await CreateBoxingInfo(result, input.PalletCode); + //if (boxing == null) return content.Error("缁勭洏澶辫触"); + + //// 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾� + //ProcessApplyDto process = await GetProcessApplyAsync(input, result); + + //// 濡傛灉process涓簄ull锛屽垯杩斿洖content + //if (process == null) return content; + + //// 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇� + //content = await _processApplyService.GetProcessApplyAsync(process); + + //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null + //if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触"); + + ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴� + ////var processResponse = await GetProcessResponseAsync(process, input.Position); + // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟 + content = await CreateNewTask(input); + //if (content.Status) + //{ + // var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); + //} + } + catch (Exception err) + { + // 濡傛灉鍙戠敓寮傚父锛屽垯璋冪敤content.Error鏂规硶锛岃褰曢敊璇俊鎭紝骞惰緭鍑洪敊璇俊鎭� + content.Error(err.Message); + Console.WriteLine(err.Message); + } + // 杩斿洖content + return content; + } + + /// <summary> + /// + /// </summary> + /// <param name="input">璇锋眰鍙傛暟</param> + /// <param name="flag">瀹炴绌烘鏍囪瘑</param> + /// <returns></returns> + private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input) + { + WebResponseContent content = new WebResponseContent(); + + //DtLocationInfo locationInfo = await RequestLocation(input); + + //if (locationInfo == null) throw new Exception("搴撲綅宸叉弧"); + + var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position); + + if (stationinfo == null) throw new Exception("鏈煡绔欏彴"); + + + var task = await CreateNewTaskByStation(input, stationinfo); + + // 鍒涘缓鏂颁换鍔″疄渚� + //var task = new Dt_Task + //{ + // CurrentAddress = input.Position, + // Grade = 1, + // Roadway = input.Roadways, + // TargetAddress = locationInfo.LocationCode, + // Dispatchertime = DateTime.Now, + // MaterialNo = "", + // NextAddress = input.Roadways, + // OrderNo = null, + // PalletCode = input.PalletCode, + // SourceAddress = stationinfo.stationLocation, + // TaskState = (int)TaskInStatusEnum.Line_InFinish, + // TaskType = (int)TaskInboundTypeEnum.Inbound, + // TaskNum = await BaseDal.GetTaskNo(), + // Creater = "Systeam" + //}; + + // 灏濊瘯娣诲姞鏂颁换鍔� + var taskId = await BaseDal.AddDataAsync(task); + bool isResult = taskId > 0; + if (isResult) + { + // 鍒涘缓WMS浠诲姟 + WMSTaskDTO taskDTO = new WMSTaskDTO() + { + TaskNum = task.TaskNum.Value, + Grade = 1, + PalletCode = task.PalletCode, + RoadWay = task.Roadway, + SourceAddress = task.SourceAddress, + TargetAddress = task.TargetAddress, + TaskState = task.TaskState.Value, + Id = 0, + TaskType = task.TaskType, + }; + content.OK(data: taskDTO); + } + else + content.Error("娣诲姞浠诲姟澶辫触"); + return content; + } + + /// <summary> + /// 鏍规嵁璇锋眰鍙傛暟鍜岀珯鍙� 鍋氫笉鍚屼换鍔″鐞� + /// </summary> + /// <param name="input"></param> + /// <param name="stationManager"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + private async Task<Dt_Task> CreateNewTaskByStation(RequestTaskDto input, Dt_StationManager stationManager) + { + Dt_Task task = null; + switch (stationManager.stationType) + { + case 6: + case 1: + task = await CreateInTaskAsync(input, stationManager); break; + //case 2: + //case 3: //寮傚父鎺掑嚭缁橶CS澶勭悊 + //case 4: + case 5: + task = await CreateInToOutTaskAsync(input, stationManager); break; + + default: + throw new Exception("浣嶇疆绔欏彴绫诲瀷"); + } + return task; + } + + #region 鐩存帴鍑哄簱浠诲姟 + private async Task<Dt_Task> CreateInToOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager) + { + if (stationManager.stationType != 5) throw new Exception("閿欒鐨勮皟鍙�"); + + 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 = 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; + } + #endregion + + + #region 鍏ュ簱浠诲姟 + private async Task<Dt_Task> CreateInTaskAsync(RequestTaskDto input, Dt_StationManager stationManager) + { + if (stationManager.stationType != 1 && stationManager.stationType != 6) throw new Exception("閿欒鐨勮皟鍙�"); + + DtLocationInfo locationInfo = await RequestLocation(input); + + if (locationInfo == null) throw new Exception("搴撲綅宸叉弧"); + + if (stationManager.stationType == 1) + { + // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪�� TrayCellsStatusDto trayCells = new TrayCellsStatusDto() { Software = "WMS", @@ -392,62 +590,105 @@ EquipmentCode = input.EquiCodeMOM }; - // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� - content = await GetTrayCellStatusAsync(trayCells); - // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content - if (!content.Status) return content; + //// 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺� + //content = await GetTrayCellStatusAsync(trayCells); + //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content + //if (!content.Status) return content; - // 娣诲姞缁勭洏淇℃伅 - // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄 - var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); - if (result.SerialNos.Count <= 0) - return content.Error(result.MOMMessage); + //// 娣诲姞缁勭洏淇℃伅 + //// 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄 + //var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); + //if (result.SerialNos.Count <= 0) + // return content.Error(result.MOMMessage); - Console.WriteLine(result); - // TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭� - //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); - //if (productions.Count <= 0) - // return content.Error("鏂欐灞炴�т笉瀛樺湪"); + //Console.WriteLine(result); + //// TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭� + ////var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty)); + ////if (productions.Count <= 0) + //// return content.Error("鏂欐灞炴�т笉瀛樺湪"); - // 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭� + //// 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭� - var boxing = await CreateBoxingInfo(result, input.PalletCode); - if (boxing == null) return content.Error("缁勭洏澶辫触"); + //var boxing = await CreateBoxingInfo(result, input.PalletCode); + //if (boxing == null) return content.Error("缁勭洏澶辫触"); - // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾� - ProcessApplyDto process = await GetProcessApplyAsync(input, result); + //// 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾� + //ProcessApplyDto process = await GetProcessApplyAsync(input, result); - // 濡傛灉process涓簄ull锛屽垯杩斿洖content - if (process == null) return content; + //// 濡傛灉process涓簄ull锛屽垯杩斿洖content + //if (process == null) return content; - // 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇� - content = await _processApplyService.GetProcessApplyAsync(process); + //// 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇� + //content = await _processApplyService.GetProcessApplyAsync(process); - // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null - if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触"); + //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null + //if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触"); - //// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴� - //var processResponse = await GetProcessResponseAsync(process, input.Position); + ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴� + ////var processResponse = await GetProcessResponseAsync(process, input.Position); + } - List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" }; - // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟 - content = await CreateNewTask(input, strings); - if (content.Status) + var task = new Dt_Task + { + CurrentAddress = input.Position, + Grade = 1, + Roadway = input.Roadways, + TargetAddress = locationInfo.LocationCode, + Dispatchertime = DateTime.Now, + MaterialNo = "", + NextAddress = input.Roadways, + OrderNo = null, + PalletCode = input.PalletCode, + SourceAddress = stationManager.stationLocation, + TaskState = (int)TaskInStatusEnum.Line_InFinish, + TaskType = stationManager.stationType == 1 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray, + TaskNum = await BaseDal.GetTaskNo(), + Creater = "Systeam" + }; + + locationInfo.LocationStatus = (int)LocationEnum.FreeDisable; + await UpdateLocationAsync(locationInfo); + + return task; + } + #endregion + + #region 搴撲綅鍒嗛厤 + /// <summary> + /// + /// </summary> + /// <param name="requestTask">璇锋眰鍙傛暟</param> + /// <returns></returns> + private async Task<DtLocationInfo> RequestLocation(RequestTaskDto requestTask) + { + #region 鑾峰彇璐т綅 + try + { + List<DtLocationInfo> locations; + if (requestTask.Roadways.Contains("FR")) { - var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); + locations = await _locationRepository.QueryDataAsync(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == requestTask.Roadways && x.EnalbeStatus == 1 && x.LocationType == 2 && x.Remark == "1"); } + else + { + locations = await _locationRepository.QueryDataAsync(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == requestTask.Roadways && x.EnalbeStatus == 1 && x.LocationType == 1); + } + + if (locations == null) + { + return null; + } + + return locations.OrderBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault(); } catch (Exception err) { - // 濡傛灉鍙戠敓寮傚父锛屽垯璋冪敤content.Error鏂规硶锛岃褰曢敊璇俊鎭紝骞惰緭鍑洪敊璇俊鎭� - content.Error(err.Message); - Console.WriteLine(err.Message); + Console.WriteLine(err.Message.ToString()); + return null; } - - // 杩斿洖content - return content; - } - + #endregion 鑾峰彇璐т綅 + } + #endregion // 鑾峰彇宸ヨ壓鐢宠 private async Task<ProcessApplyDto> GetProcessApplyAsync(RequestTaskDto input, ResultTrayCellsStatus content) @@ -457,7 +698,7 @@ { EquipmentCode = input.EquiCodeMOM, Software = "WMS", - //WipOrderNo = result.BindCode, + //WipOrderNo = result.BindCode," SerialNos = content.SerialNos.Select(item => new SerialNos { SerialNo = item.SerialNo @@ -467,59 +708,25 @@ #endregion 璇锋眰浠诲姟鍏ュ簱 + public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task) + { + WebResponseContent content = new WebResponseContent(); + try + { + //娣诲姞鍘嗗彶 + var taskHty = CreateHistoricalTask(task); + //鍒犻櫎浠诲姟 + BaseDal.DeleteData(task); - - #region 浠诲姟鐘舵�佹洿鏀� - - /// <summary> - /// 鏇存柊浠诲姟鐘舵��&鍑哄簱瑙g洏 - /// </summary> - /// <param name="taskNum"></param> - /// <param name="taskState"></param> - /// <returns></returns> - //public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState) - //{ - // WebResponseContent content = new WebResponseContent(); - // try - // { - // var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum); - // if (task == null) - // return content.Error("鏈壘鍒颁换鍔�"); - - // if (taskState == (int)TaskOutStatusEnum.Line_OutFinish || taskState == (int)TaskOutStatusEnum.SC_OutFinish) - // { - // var taskHty = CreateHistoricalTask(task); - // await _unitOfWorkManage.UseTranAsync(async () => - // { - // var asb = await BaseDal.DeleteDataByIdAsync(task.TaskId); - // var asbHty = await _task_HtyRepository.AddDataAsync(taskHty) > 0; - // if (asb && asbHty) - // content.OK(); - // else - // throw new Exception(); - // }); - // content.OK(); - // } - // else - // { - // task.TaskState = taskState; - // var asb = await BaseDal.UpdateDataAsync(task); - // if (asb) - // content.OK(); - // else - // content.Error(); - // } - // } - // catch (Exception ex) - // { - // content.Error(ex.Message); - // } - // return content; - //} - - #endregion - - //private WebResponseContent CheckInTask() + return content.OK(); + } + catch (Exception ex) + { + return content.Error (ex.Message); + } + + return content; + } } \ No newline at end of file -- Gitblit v1.9.3