From e2655143a06ee42eec06a97b045f33a09fbb3a3f Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期二, 24 十二月 2024 17:40:18 +0800 Subject: [PATCH] 合并更改 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 154 insertions(+), 15 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs index bf8748c..b19f3b0 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs @@ -1,7 +1,8 @@ -锘縰sing AngleSharp.Io; -using Mapster; +锘縰sing Mapster; using Masuit.Tools; +using SixLabors.Fonts.Tables.AdvancedTypographic; using System.Text.RegularExpressions; +using System.Threading.Tasks; using WIDESEA_Core.Const; using WIDESEA_DTO.MOM; using WIDESEA_DTO.WMS; @@ -286,7 +287,7 @@ WebResponseContent content = new WebResponseContent(); try { - if (task.TaskType == (int)TaskInboundTypeEnum.InNG) + if (task.TaskType == (int)TaskInboundTypeEnum.InNG || task.TaskType == (int)TaskInboundTypeEnum.InQuality) { task.TaskState = (int)TaskInStatusEnum.SC_InFinish; // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷 @@ -429,9 +430,10 @@ if (boxing.ProcessCode == "OCV1") area = _areaInfoRepository.QueryFirst(x => x.AreaID == 6); - else if (boxing.ProcessCode == "OCVB") area = _areaInfoRepository.QueryFirst(x => x.AreaID == 7); + else + area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId); if (area == null) throw new Exception("鏈壘鍒板搴斿尯鍩熶俊鎭�"); @@ -454,7 +456,7 @@ Remark = boxing.BoxingInfoDetails.Count().ToString(), }; - if (boxing.ProcessCode != "OCVB") + if (boxing.ProcessCode != "OCVB" && !task.Roadway.Contains("FR")) { // 澶勭悊璇锋眰鍙傛暟 AgingInputDto agingInputDto = new AgingInputDto() @@ -539,6 +541,7 @@ case (int)TaskInboundTypeEnum.Inbound: case (int)TaskInboundTypeEnum.InTray: case (int)TaskInboundTypeEnum.InNG: + case (int)TaskInboundTypeEnum.InQuality: LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟", ""); return await CompleteInboundTaskAsync(task); @@ -1026,7 +1029,7 @@ { // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅 DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound - ? areaCodes == null ? await QueryStockInfoForRealTrayAsync(areaCode, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine) + ? areaCode != "CWSC1" ? await QueryStockInfoForRealTrayAsync(areaCode, areaCodes, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine) : await QueryStockInfoForEmptyTrayAsync(areaCode); if (stockInfo == null) @@ -1074,7 +1077,7 @@ /// <summary> /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅 /// </summary> - private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, string productionLine) + private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> devices, string productionLine) { var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode); @@ -1084,6 +1087,7 @@ .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢 .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine) .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢 + .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo)) .OrderBy(x => x.OutboundTime) // 鎺掑簭 .FirstAsync(); // 鑾峰彇绗竴涓厓绱� @@ -1094,7 +1098,7 @@ } /// <summary> - /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅 + /// 鏌ヨ甯告俯瀹炵洏搴撳瓨淇℃伅 /// </summary> private async Task<DtStockInfo> QueryStockInfoForRealTrayCWAsync(List<string> areaCodes, string productionLine) { @@ -1143,7 +1147,7 @@ { return new Dt_Task { - Grade = 1, + Grade = tag == 104 ? 2 : 1, Roadway = stockInfo.LocationInfo.RoadwayNo, TargetAddress = position, Dispatchertime = DateTime.Now, @@ -1170,7 +1174,7 @@ return new WMSTaskDTO { TaskNum = task.TaskNum.Value, - Grade = 1, + Grade = task.Grade.Value, PalletCode = task.PalletCode, RoadWay = task.Roadway, SourceAddress = task.SourceAddress, @@ -1323,9 +1327,108 @@ #endregion 鎸囧畾浠诲姟鍑哄簱 - #region 闈欑疆寮傚父鍙e叆搴� + #region 闈欑疆寮傚父鍙e叆搴� - #endregion + public async Task<WebResponseContent> CreateAndSendInboundTask(string palletCode, string position) + { + WebResponseContent content = new WebResponseContent(); + try + { + // 鏌ヨ搴撳瓨淇℃伅 + var stockInfo = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == palletCode); + if (stockInfo == null) + { + var taskOld = BaseDal.QueryFirst(x => x.PalletCode == palletCode); + if (!taskOld.IsNullOrEmpty()) + {// 鍒涘缓WMS浠诲姟 + WMSTaskDTO taskDTO = new WMSTaskDTO() + { + TaskNum = taskOld.TaskNum.Value, + Grade = 1, + PalletCode = taskOld.PalletCode, + RoadWay = taskOld.Roadway, + SourceAddress = taskOld.CurrentAddress, + TargetAddress = taskOld.TargetAddress, + TaskState = taskOld.TaskState.Value, + Id = 0, + TaskType = taskOld.TaskType, + }; + return content.OK(data: taskDTO); + } + var area = _areaInfoRepository.QueryFirst(x => x.AreaID == 2); + var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == position); + TrayCellsStatusDto trayCells = CreateTrayCellsStatusDto(area, palletCode); + content = await GetTrayCellStatusAsync(trayCells); + if (!content.Status) return content; + + ConsoleHelper.WriteErrorLine(content.ToJsonString()); + var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); + if (result.SerialNos.Count > 0) + { + var location = await GetLocationDistributeAsync(station.Roadway); + + ConsoleHelper.WriteErrorLine(location.ToJsonString()); + // 鍒涘缓鏂颁换鍔″疄渚� + var task = new Dt_Task + { + CurrentAddress = station.stationLocation, + Grade = 1, + Roadway = station.Roadway, + TargetAddress = location.LocationCode, + Dispatchertime = DateTime.Now, + MaterialNo = "", + NextAddress = location.LocationCode, + OrderNo = null, + PalletCode = palletCode, + SourceAddress = position, + TaskState = (int)TaskInStatusEnum.Line_InFinish, + TaskType = (int)TaskInboundTypeEnum.Inbound, + TaskNum = await BaseDal.GetTaskNo(), + Creater = "Systeam" + }; + + // 鍒涘缓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, + }; + + await _unitOfWorkManage.UseTranAsync(async () => + { + // 娣诲姞浠诲姟鍒版暟鎹簱 + await BaseDal.AddDataAsync(task); + // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢� + location.LocationStatus = (int)LocationEnum.InStockDisable; + await _locationRepository.UpdateDataAsync(location); + }); + + content.OK(data: taskDTO); + } + else + content.Error(result.MOMMessage); + } + else + { + // TODO璐ㄦ鍥炲簱 + var area = _areaInfoRepository.QueryFirst(x => x.AreaID == 2); + } + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } + + #endregion 闈欑疆寮傚父鍙e叆搴� #endregion 澶栭儴鎺ュ彛鏂规硶 @@ -1370,7 +1473,35 @@ { return await BaseDal.Delete(ids); } + public override WebResponseContent DeleteData(object[] key) + { + WebResponseContent content = new WebResponseContent(); + // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷 + try + { + Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == Convert.ToInt32(key[0])); + if (task == null) + { + return content.Error("鏈壘鍒颁换鍔′俊鎭�!"); + } + var taskHtyNG = CreateHistoricalTask(task, true); + // 鎵ц鏁版嵁搴撲簨鍔� + + // 娣诲姞鍘嗗彶浠诲姟 + var isTaskHtyAdd = _task_HtyRepository.AddData(taskHtyNG) > 0; + + // 鍒犻櫎浠诲姟鏁版嵁 + var isTaskDelete = BaseDal.Delete(task.TaskId); + + return content.OK("鍒犻櫎鎴愬姛!"); + } + catch (Exception ex) + { + return content.Error("鍒犻櫎浠诲姟寮傚父锛�" + ex.Message); + } + + } /// <summary> /// 閫氳繃ID鑾峰彇浠诲姟 /// </summary> @@ -1480,7 +1611,7 @@ /// </summary> /// <param name="task"></param> /// <returns></returns> - private Dt_Task_Hty CreateHistoricalTask(Dt_Task task) + private Dt_Task_Hty CreateHistoricalTask(Dt_Task task, bool isHand = false) { // 鏇存柊浠诲姟鐘舵�� task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); @@ -1490,7 +1621,7 @@ var taskHty = _mapper.Map<Dt_Task_Hty>(task); taskHty.FinishTime = DateTime.Now; taskHty.TaskId = 0; - taskHty.OperateType = (int)OperateTypeEnum.鑷姩瀹屾垚; + taskHty.OperateType = isHand ? (int)OperateTypeEnum.浜哄伐鍒犻櫎 : (int)OperateTypeEnum.鑷姩瀹屾垚; taskHty.SourceId = task.TaskId; taskHty.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); return taskHty; @@ -1608,6 +1739,14 @@ var content = new WebResponseContent(); // 鑾峰彇鐩爣鍦板潃鍜屾洿鏂颁换鍔$姸鎬� + + + input.Position = Regex.Replace(input.Position, @"-(\d+)", ""); + if (Convert.ToInt32(input.Position) > 1999) + { + input.Position = (Convert.ToInt32(input.Position) - 1000).ToString(); + } + if (task.TaskType == (int)TaskInboundTypeEnum.InNG) { // TODO 鏍规嵁宸烽亾鏌ユ壘瀵瑰簲NG鍙o紝鐜板湪榛樿鍘婚潤缃爢鍨涙満鐨勫紓甯稿彛璐т綅鍙� @@ -1620,7 +1759,7 @@ } else if (task.TaskType == (int)TaskInboundTypeEnum.InQuality) { - var stockInfo = _stockInfoRepository.QueryFirst(x => x.PalletCode == input.PalletCode); + var stockInfo = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == input.PalletCode); task.CurrentAddress = input.Position; task.TargetAddress = stockInfo.LocationInfo.LocationCode; task.NextAddress = stockInfo.LocationInfo.LocationCode; -- Gitblit v1.9.3