فهرست منبع

优化 SXService.cs 中的命名空间和查询逻辑

修改了 SXService.cs 文件中的命名空间 wms.service.Service 的代码。
在 RedisHelper.Set 方法之后,添加了 startTime 变量,并将 invlist 过滤出 ProductTime 小于 startTime 的项,然后按 Depth 和 ProductTime.Day 排序。
注释掉了 invlist 的楼层过滤代码,并添加了一个 foreach 循环来遍历 invlist。
注释掉了 time2 变量的定义和相关的时间判断逻辑,改为直接判断 item.ProductTime 是否小于等于 startTime。
在提前查询并返回符合条件的 cell 列表的代码中,添加了 cell 变量的定义,并将禁用巷道信息的处理逻辑改为使用 Tuple<int, int> 类型的列表。
修改了 cellQuery 的过滤逻辑,避免多次遍历 cell 列表,并在禁用巷道信息存在时执行查询获取最终的 cell 列表。
在禁用巷道信息不存在时,直接执行查询获取 cell 列表。
林豪 左 5 ماه پیش
والد
کامیت
e4fd356fa1
1فایلهای تغییر یافته به همراه16 افزوده شده و 16 حذف شده
  1. 16 16
      wms.service/Service/SXService.cs

+ 16 - 16
wms.service/Service/SXService.cs

@@ -845,7 +845,8 @@ namespace wms.service.Service
                     res.ResMsg = ResponseStatusCodeEnum.NotEnoughStock.GetDescription() + "没有需要扭转检测的工字轮";
                     return res;
                 }
-                invlist = invlist.OrderBy(p => p.Depth).ThenByDescending(p => p.ProductTime.Day);
+                var startTime = DateTime.Now.Date.AddDays(-1).AddMilliseconds(-1);
+                invlist = invlist.Where(x=>x.ProductTime < startTime).ToList().OrderBy(p => p.Depth).OrderByDescending(p => p.ProductTime.Day);
                 var tasklist = _taskrepository.AsQueryable().With(SqlWith.NoLock).Where(p => p.BusType == SxTaskBusType.TaskBusType_SX_TorCheckStockOut.GetDescription() && p.Type == TaskType.OutDepot).ToList();
                 var torTaskCount = _sysconfigrepository.GetFirst(p => p.Code == "TorTaskCount").SContent;
                 if (tasklist.Any() && tasklist.Count > int.Parse(torTaskCount))
@@ -914,6 +915,7 @@ namespace wms.service.Service
                 //{
                 int pp = 0;
                 //invlist = invlist.Where(p => p.Floor == floor);
+                
                 foreach (var item in invlist)
                 {
                     if (item.TorsChkValue != null)
@@ -925,11 +927,10 @@ namespace wms.service.Service
                     //    break;
                     //}
                     var time1 = item.HoldTime + decimal.Parse(TorschkDate.SContent); //时效上限
-                    var time2 = item.HoldTime - decimal.Parse(TorschkDate.Default1); //时效下限
-                                                                                     //|| (decimal.Parse((DateTime.Now - item.ProductTime).TotalHours.ToString("f2")) > 72 && decimal.Parse((DateTime.Now - item.ProductTime).TotalHours.ToString("f2")) > item.HoldTime)
-                                                                                     //if (decimal.Parse((DateTime.Now - item.ProductTime).TotalHours.ToString("f2")) >= time2) //按小时判断是否扭转的方式应客户要求停用-2024-12-24
-                    var startTime = DateTime.Now.Date.AddDays(-1).AddMilliseconds(-1);
-                    var endTime = startTime.AddDays(+1).AddMilliseconds(-1);
+                    //var time2 = item.HoldTime - decimal.Parse(TorschkDate.Default1); //时效下限
+                    //|| (decimal.Parse((DateTime.Now - item.ProductTime).TotalHours.ToString("f2")) > 72 && decimal.Parse((DateTime.Now - item.ProductTime).TotalHours.ToString("f2")) > item.HoldTime)
+                    //if (decimal.Parse((DateTime.Now - item.ProductTime).TotalHours.ToString("f2")) >= time2) //按小时判断是否扭转的方式应客户要求停用-2024-12-24
+                    
                     if (item.ProductTime <= startTime) //时间在此范围即可流转,例:3号标记的检测盘(00:00到23:59之间),5号全部出库进行检测(7点开始出
                     {
                         var inv = _billInvnowrepository.GetSingle(p =>
@@ -1462,27 +1463,26 @@ namespace wms.service.Service
                 .With(SqlWith.NoLock)
                 .Where(p => p.IsStop == LocationStop.LocationInvoke.GetHashCode() && p.StateNum == LocationState.LocationState_Empty);
 
+            var cell = new List<BaseWarecell>();
+
             // 获取禁用的巷道信息
             var disabletunnels = _sysconfigrepository.GetList(p => p.SType == "InStop" && !string.IsNullOrEmpty(p.SContent));
             if (disabletunnels != null && disabletunnels.Any())
             {
-                // 先提取禁用的巷道数据到集合中
-                var disableTunnelIds = new HashSet<(int Tunnel, int Floor)>();
+                // 先提取禁用的巷道数据到集合中,item1 为巷道,item2 为楼层
+                var disableTunnels = new List<Tuple<int, int>>();
 
                 foreach (var item in disabletunnels)
                 {
                     var distun = int.Parse(item.Default1);
                     var disfloor = int.Parse(item.Default2);
-                    disableTunnelIds.Add((distun, disfloor));
+                    disableTunnels.Add(new Tuple<int, int>(distun, disfloor));
+                    cellQuery.Where(x => x.Tunnel != distun && x.Floor != disfloor);
                 }
-
-                // 在数据库查询时进行过滤,避免多次遍历 cell 列表
-                cellQuery = cellQuery.Where(p => disableTunnelIds.All(x => x.Tunnel != p.Tunnel && x.Floor != p.Floor));
+                // 执行查询,获取最终的 cell 列表
+                cell = cellQuery.Clone().ToList();
             }
-
-            // 执行查询,获取最终的 cell 列表
-            var cell = cellQuery.ToList();
-
+            else cell = cellQuery.ToList();
             time2.Stop();
             bool isTobeTors = false;
             int tun = 2;