dengjunjie
9 天以前 e579c8d3ab3accb26258f0c615101e3d86093730
н¨Îļþ¼Ð/WIDESEA_WMSServer/ClassLibrary2/InventoryInfoService.cs
@@ -25,82 +25,6 @@
        }
        public IRepository<Dt_InventoryInfo> Repository => BaseDal;
        public WebResponseContent GetExpiredAndlow()
        {
            try
            {
                // èŽ·å–å½“å‰æ—¶é—´ï¼ˆåªå–æ—¥æœŸéƒ¨åˆ†ï¼Œå¿½ç•¥æ—¶é—´ï¼‰
                DateTime currentDate = DateTime.Today;
                // è®¡ç®—30天后的日期
                DateTime thresholdDate = currentDate.AddDays(30);
                // æŸ¥æ‰¾åº“存中所有商品
                var inventoryList = BaseDal.QueryData();
                var expiredSoonList = new List<object>();
                foreach (var item in inventoryList)
                {
                    // æ£€æŸ¥ValidityPeriod是否为空
                    if (string.IsNullOrEmpty(item.ValidityPeriod))
                        continue;
                    // ä½¿ç”¨ç²¾ç¡®æ ¼å¼è§£æž "2037-10-02"
                    if (DateTime.TryParseExact(item.ValidityPeriod.Trim(), "yyyy-MM-dd",
                        System.Globalization.CultureInfo.InvariantCulture,
                        System.Globalization.DateTimeStyles.None, out DateTime expiryDate))
                    {
                        // è®¡ç®—剩余天数(只比较日期部分)
                        double daysRemaining = (expiryDate - currentDate).TotalDays;
                        // æ£€æŸ¥æ˜¯å¦åœ¨30天内(包括已过期的)
                        if (daysRemaining <= 30)
                        {
                            expiredSoonList.Add(new
                            {
                                MaterielCode = item.MaterielCode ?? "",
                                BatchNo = item.BatchNo ?? "",
                                ValidityPeriod = item.ValidityPeriod,
                                ExpiryDate = expiryDate.ToString("yyyy-MM-dd"),
                            });
                        }
                    }
                    else
                    {
                        // è®°å½•解析失败的记录(用于调试)
                        Console.WriteLine($"无法解析效期: {item.ValidityPeriod}");
                    }
                }
                // æŒ‰å‰©ä½™å¤©æ•°å‡åºæŽ’列(即将过期的排前面)
                var sortedList = expiredSoonList.OrderBy(x =>
                {
                    var days = (int)((dynamic)x).DaysRemaining;
                    return days;
                }).ToList();
                return new WebResponseContent
                {
                    Status = true,
                    Message = $"发现 {sortedList.Count} ä¸ªå•†å“å°†åœ¨30天内过期",
                    Data = new
                    {
                        TotalCount = sortedList.Count,
                        ExpiredCount = sortedList.Count(x => ((dynamic)x).DaysRemaining < 0),
                        WarningCount = sortedList.Count(x => ((dynamic)x).DaysRemaining >= 0),
                        CheckDate = currentDate.ToString("yyyy-MM-dd"),
                        Items = sortedList
                    }
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent
                {
                    Status = false,
                    Message = $"获取效期数据失败: {ex.Message}"
                };
            }
        }
        /// <summary>
        /// èŽ·å–åº“å­˜
@@ -152,6 +76,6 @@
        }
    }
}