| | |
| | | using System; |
| | | using HslCommunication; |
| | | using MailKit.Search; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.SquareCabin; |
| | | using WIDESEA_IWMsInfoServices; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | |
| | | namespace WIDESEA_WMsInfoServices |
| | | { |
| | |
| | | public InventoryInfoService(IRepository<Dt_InventoryInfo> BaseDal) : base(BaseDal) |
| | | { |
| | | } |
| | | 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> |
| | | /// è·ååºå |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetInventory() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<object> lists = new List<object>(); |
| | | #region å·å»åº |
| | | string WareCodeLD = WarehouseEnum.å·å»åº.ObjToInt().ToString("000"); |
| | | List<Dt_InventoryInfo> inventoryInfosLD = BaseDal.QueryData(x => x.WarehouseCode == WareCodeLD); |
| | | object LDQty = new |
| | | { |
| | | name = WarehouseEnum.å·å»åº.ObjToString(), |
| | | count = inventoryInfosLD.Sum(x => x.StockQuantity).ObjToInt() |
| | | }; |
| | | lists.Add(LDQty); |
| | | #endregion |
| | | #region éº»ç²¾åº |
| | | string WareCodeMJ = WarehouseEnum.麻精åº.ObjToInt().ToString("000"); |
| | | List<Dt_InventoryInfo> inventoryInfosMJ = BaseDal.QueryData(x => x.WarehouseCode == WareCodeMJ); |
| | | object MJQty = new |
| | | { |
| | | name = WarehouseEnum.麻精åº.ObjToString(), |
| | | count = inventoryInfosMJ.Sum(x => x.StockQuantity).ObjToInt() |
| | | }; |
| | | lists.Add(MJQty); |
| | | #endregion |
| | | #region å¤§ä»¶åº |
| | | string WareCodeDJ = WarehouseEnum.大件åº.ObjToInt().ToString("000"); |
| | | List<Dt_InventoryInfo> inventoryInfosDJ = BaseDal.QueryData(x => x.WarehouseCode == WareCodeDJ); |
| | | object DJQty = new |
| | | { |
| | | name = WarehouseEnum.大件åº.ObjToString(), |
| | | count = inventoryInfosDJ.Sum(x => x.StockQuantity).ObjToInt() |
| | | }; |
| | | lists.Add(DJQty); |
| | | #endregion |
| | | content.OK(data: lists); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |