From d0712fcf60aa1ef5ddfb8d18b583a742893a7aea Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <1247017146@qq.com> Date: 星期二, 03 六月 2025 11:04:52 +0800 Subject: [PATCH] 代码提交 --- CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 225 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 196 insertions(+), 29 deletions(-) diff --git a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs index fd00670..5ed18a6 100644 --- a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs +++ b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs @@ -3,6 +3,7 @@ using SixLabors.Fonts.Tables.AdvancedTypographic; using SqlSugar; using System.Text.RegularExpressions; +using System.Threading.Tasks; using WIDESEA_Cache; using WIDESEA_Core; using WIDESEA_Core.Const; @@ -276,6 +277,36 @@ #endregion 鍑哄簱浠诲姟瀹屾垚 + #region 鐏浠诲姟瀹屾垚 + public async Task<WebResponseContent> CompleteOutFireAlarmTaskAsync(Dt_Task task, DtStockInfo stock) + { + WebResponseContent content = new WebResponseContent(); + (var loc, var tas) = UpdateStockAndTaskStatus(stock, task); + var taskHty = task.Adapt<Dt_Task_Hty>(); + taskHty.FinishTime = DateTime.Now; + taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚; + taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System"; + + DtStockInfo_Hty stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>(); + stockInfo_Hty.ModifyDate = DateTime.Now; + + // 浜嬪姟澶勭悊 + await _unitOfWorkManage.UseTranAsync(async () => + { + if (task.TaskType != (int)TaskOutboundTypeEnum.OutQuality) + { + await DeleteStockInfoAsync(stock.Id); + await DeleteStockInfoDetailsAsync(stock.StockInfoDetails); + await AddStockInfoHtyAsync(stockInfo_Hty); + await UpdateLocationAsync(loc); //璐ㄦ浠诲姟闇�瑕佹寔缁攣瀹氬簱浣� + } + await DeleteTaskAsync(task.TaskId); + await AddTaskHtyAsync(taskHty); + }); + return content.OK("浠诲姟瀹屾垚鎴愬姛", task.Remark); + } + #endregion + #region 绉诲簱浠诲姟瀹屾垚 /// <summary> @@ -322,7 +353,7 @@ WebResponseContent content = new WebResponseContent(); try { - if (task.TaskType == (int)TaskInboundTypeEnum.InNG || task.TaskType == (int)TaskInboundTypeEnum.InQuality) + if (task.TaskType == (int)TaskInboundTypeEnum.InNG) { task.TaskState = (int)TaskInStatusEnum.SC_InFinish; // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷 @@ -389,6 +420,9 @@ Console.WriteLine(err.Message.ToString()); LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, err); content.Error(err.Message); + task.ErrorMessage = err.Message; + task.TaskState = (int)TaskInStatusEnum.SC_InExecuting; + await BaseDal.Update(task); } return content; } @@ -596,6 +630,11 @@ case (int)TaskOutboundTypeEnum.OutNG: LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", ""); return await CompleteStackTaskAsync(task, stock); + + case (int)TaskOutboundTypeEnum.OutFireAlarm: + + LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鐏浠诲姟", ""); + return await CompleteOutFireAlarmTaskAsync(task, stock); case (int)TaskRelocationTypeEnum.Relocation: return await CompleteTransferTaskAsync(task, stock); @@ -1047,11 +1086,11 @@ .ToList().Select(x => x.DeviceCode).ToList(); var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>() - .Where(x => x.ProductionLine == station.productLine) + .WhereIF(!station.Roadway.Contains("JZSC"), x => x.ProductionLine == station.productLine) .Where(x => x.AreaCode == areaCode && x.IsFull == false) - .Includes(x=>x.StockInfoDetails) + .Includes(x => x.StockInfoDetails) .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�")) - .Includes(x=>x.LocationInfo) + .Includes(x => x.LocationInfo) .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo)) .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢 .OrderBy(x => x.CreateDate) // 鎺掑簭 @@ -1076,7 +1115,7 @@ { return new Dt_Task { - Grade = tag == 104 ? (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") ? 1 : 2) : (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") ? 2 : 1), + Grade = tag == 104 ? (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC")|| stockInfo.LocationInfo.RoadwayNo.Contains("JZSC") ? 1 : 2) : (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") || stockInfo.LocationInfo.RoadwayNo.Contains("JZSC") ? 2 : 1), Roadway = stockInfo.LocationInfo.RoadwayNo, TargetAddress = position, Dispatchertime = DateTime.Now, @@ -1611,6 +1650,96 @@ #endregion + #region 鏌ヨ闈欑疆绌洪棽搴撲綅 + public WebResponseContent QueryLocationFreeJZ(string RoadwayNo) + { + WebResponseContent content = new WebResponseContent(); + try + { + var result = _locationRepository.QueryData(x => x.EnalbeStatus != (int)EnableEnum.Disable && x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo.Contains("JZSC")); + LogFactory.GetLog($"闈欑疆{RoadwayNo}鏌ヨ绌洪棽搴撲綅").Info(true, $"{JsonConvert.SerializeObject(result)}"); + if (result.Count > 5) + { + return content.OK(); + } + return content.Error("搴撲綅宸叉弧"); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + #endregion + + #region 澶у睆鎺ュ彛 + + /// <summary> + /// 鑾峰彇浠诲姟淇℃伅 + /// </summary> + /// <returns></returns> + public WebResponseContent GetTaskInfo() + { + WebResponseContent content = new WebResponseContent(); + try + { + var task = BaseDal.QueryData(x => true).ToList(); + var newTask = task.Select(x => new + { + x.PalletCode, + x.Roadway, + x.SourceAddress, + x.TargetAddress, + x.ProductionLine, + TaskType = new List<string> { GetTaskTypeDesc(x.TaskType) }[0], // 姣忎釜浠诲姟鐙珛鐢熸垚 TaskType + TaskState = new List<string> { GetTaskStateDesc(x.TaskState) }[0] // 姣忎釜浠诲姟鐙珛鐢熸垚 TaskState + }).ToList(); + + return content.OK(data: newTask); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + /// <summary> + /// 鑾峰彇搴撳瓨淇℃伅 + /// </summary> + /// <returns></returns> + public WebResponseContent GetStockInfo() + { + WebResponseContent content = new WebResponseContent(); + try + { + var now = DateTime.Now; + var startOfDay = new DateTime(now.Year, now.Month, now.Day); + var endOfDay = startOfDay.AddDays(1); + var filteredItems = _stockInfoRepository.Db.Queryable<DtStockInfo>() + .Where(x => x.OutboundTime >= startOfDay && x.OutboundTime < endOfDay && x.IsFull) + .Includes(x => x.StockInfoDetails) + .ToList(); + + var result = filteredItems + .GroupBy(x => x.AreaCode) + .Select(g => new GroupedStockInfo + { + AreaCode = g.Key, + TotalQuantity = g.Sum(item => item.StockInfoDetails?.Count ?? 0), + Items = g.ToList() + }) + .ToList(); + return content.OK(data: result); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + + + #endregion + #endregion 澶栭儴鎺ュ彛鏂规硶 #region 鍐呴儴璋冪敤鏂规硶 @@ -1788,6 +1917,44 @@ #region private 鍐呴儴鏂规硶 + + /// <summary> + /// 鑾峰彇浠诲姟绫诲瀷鎻忚堪鏂规硶 + /// </summary> + /// <param name="taskType"></param> + /// <returns></returns> + private string GetTaskTypeDesc(int taskType) + { + return taskType switch + { + (int)TaskInboundTypeEnum.Inbound => TaskInboundTypeEnum.Inbound.GetIntegralRuleTypeEnumDesc(), + (int)TaskInboundTypeEnum.InTray => TaskInboundTypeEnum.InTray.GetIntegralRuleTypeEnumDesc(), + (int)TaskInboundTypeEnum.InNG => TaskInboundTypeEnum.InNG.GetIntegralRuleTypeEnumDesc(), + (int)TaskInboundTypeEnum.InQuality => TaskInboundTypeEnum.InQuality.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutboundTypeEnum.OutTray => TaskOutboundTypeEnum.OutTray.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutboundTypeEnum.Outbound => TaskOutboundTypeEnum.Outbound.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutboundTypeEnum.OutNG => TaskOutboundTypeEnum.OutNG.GetIntegralRuleTypeEnumDesc(), + }; + } + + // 瀹氫箟鑾峰彇浠诲姟鐘舵�佹弿杩版柟娉� + private string GetTaskStateDesc(int? taskState) + { + return taskState switch + { + (int)TaskInStatusEnum.InNew => TaskInStatusEnum.InNew.GetIntegralRuleTypeEnumDesc(), + (int)TaskInStatusEnum.Line_InExecuting => TaskInStatusEnum.Line_InExecuting.GetIntegralRuleTypeEnumDesc(), + (int)TaskInStatusEnum.Line_InFinish => TaskInStatusEnum.Line_InFinish.GetIntegralRuleTypeEnumDesc(), + (int)TaskInStatusEnum.SC_InExecuting => TaskInStatusEnum.SC_InExecuting.GetIntegralRuleTypeEnumDesc(), + (int)TaskInStatusEnum.SC_InFinish => TaskInStatusEnum.SC_InFinish.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutStatusEnum.OutNew => TaskOutStatusEnum.OutNew.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutStatusEnum.SC_OutExecuting => TaskOutStatusEnum.SC_OutExecuting.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutStatusEnum.SC_OutFinish => TaskOutStatusEnum.SC_OutFinish.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutStatusEnum.Line_OutExecuting => TaskOutStatusEnum.Line_OutExecuting.GetIntegralRuleTypeEnumDesc(), + (int)TaskOutStatusEnum.Line_OutFinish => TaskOutStatusEnum.Line_OutFinish.GetIntegralRuleTypeEnumDesc(), + }; + } + /// <summary> /// 鍒涘缓鍘嗗彶浠诲姟璁板綍 /// </summary> @@ -1866,32 +2033,32 @@ } #region 鏇存柊搴撳瓨淇℃伅锛堟殏鏃朵笉闇�瑕侊級 - //if (stock.IsFull) - //{ - // // 鏌ヨ绗﹀悎鏉′欢鐨勫簱瀛樹俊鎭� - // var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration); + if (stock.IsFull) + { + // 鏌ヨ绗﹀悎鏉′欢鐨勫簱瀛樹俊鎭� + var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration); - // // 鏌ヨ浠诲姟淇℃伅 - // var tasks = BaseDal.QueryData(x => x.PalletCode != stock.PalletCode && x.ProductionLine == stock.ProductionLine).Select(x => x.PalletCode).ToList(); + // 鏌ヨ浠诲姟淇℃伅 + var tasks = BaseDal.QueryData(x => x.PalletCode != stock.PalletCode && x.ProductionLine == stock.ProductionLine).Select(x => x.PalletCode).ToList(); - // if (stocks != null && stocks.Count > 0) - // { - // // 杩囨护鍑洪渶瑕佹洿鏂扮殑搴撳瓨淇℃伅 - // var stocksToUpdate = stocks.Where(item => !tasks.Contains(item.PalletCode)).ToList(); - // foreach (var item in stocksToUpdate) - // { - // // 鏇存柊搴撳瓨淇℃伅鐨勭壒瀹氬弬鏁� - // item.SpecialParameterDuration = stock.SpecialParameterDuration; - // item.ParameterInfos = stock.ParameterInfos; - // item.OutboundTime = Convert.ToDateTime(item.LinedProcessFeedbackTime == null ? item.CreateDate : item.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(stock.SpecialParameterDuration)); - // } - // if (stocksToUpdate.Count > 0) - // { - // // 寮傛鏇存柊搴撳瓨淇℃伅 - // var isUpdates = await _stockInfoRepository.UpdateDataAsync(stocksToUpdate); - // } - // } - //} + if (stocks != null && stocks.Count > 0) + { + // 杩囨护鍑洪渶瑕佹洿鏂扮殑搴撳瓨淇℃伅 + var stocksToUpdate = stocks.Where(item => !tasks.Contains(item.PalletCode)).ToList(); + foreach (var item in stocksToUpdate) + { + // 鏇存柊搴撳瓨淇℃伅鐨勭壒瀹氬弬鏁� + item.SpecialParameterDuration = stock.SpecialParameterDuration; + item.ParameterInfos = stock.ParameterInfos; + item.OutboundTime = Convert.ToDateTime(item.LinedProcessFeedbackTime == null ? item.CreateDate : item.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(stock.SpecialParameterDuration)); + } + if (stocksToUpdate.Count > 0) + { + // 寮傛鏇存柊搴撳瓨淇℃伅 + var isUpdates = await _stockInfoRepository.UpdateDataAsync(stocksToUpdate); + } + } + } #endregion // 娣诲姞鍘嗗彶浠诲姟 -- Gitblit v1.9.3