| | |
| | | using IBigBreenService; |
| | | using Microsoft.IdentityModel.Tokens; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Model.Models.Basic; |
| | | |
| | | namespace BigGreenService |
| | | { |
| | |
| | | private readonly IRepository<Dt_Task_Hty> _taskHtyRepository; |
| | | private readonly IRepository<Dt_Task> _taskRepository; |
| | | private readonly IRepository<Dt_StockInfo> _stockInfoRepository; |
| | | private readonly IRepository<Dt_MaterialExpirationDate> _materialExpirationDateRepository; |
| | | |
| | | public BigGreenService(IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IRepository<Dt_OutboundOrder> outBoundOrderRepository, IRepository<Dt_LocationInfo> locationInfoRepository,IRepository<Dt_OutboundOrderDetail> outBoundOrderDetailRepository, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository,IRepository<Dt_Task> taskRepository,IRepository<Dt_Task_Hty> taskHtyRepository, IRepository<Dt_StockInfo> stockInfoRepository) |
| | | public BigGreenService(IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IRepository<Dt_OutboundOrder> outBoundOrderRepository, IRepository<Dt_LocationInfo> locationInfoRepository, IRepository<Dt_OutboundOrderDetail> outBoundOrderDetailRepository, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_Task> taskRepository, IRepository<Dt_Task_Hty> taskHtyRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_MaterialExpirationDate> materialExpirationDateRepository) |
| | | { |
| | | _stockInfoDetailRepository = stockInfoDetailRepository; |
| | | _outBoundOrderRepository = outBoundOrderRepository; |
| | |
| | | _taskRepository = taskRepository; |
| | | _taskHtyRepository = taskHtyRepository; |
| | | _stockInfoRepository = stockInfoRepository; |
| | | _materialExpirationDateRepository = materialExpirationDateRepository; |
| | | } |
| | | public WebResponseContent GetBigGreenData() |
| | | { |
| | |
| | | // 4. è·åè¿7æ¥æ¯æ¥åºå
¥åºæç»ï¼æ ¸å¿ä¿®æ¹ï¼è°ç¨ä¸é¢çæ¹æ³ï¼ |
| | | var dailyInOutBoundList = Get7DaysDailyInOutBound(); |
| | | |
| | | var nearExpirationList = GetMaterialsNearExpiration(); |
| | | //è·åä½ä¸ç»è®¡ |
| | | var completeTask = SimpleStatistics(); |
| | | //ä»»å¡ |
| | |
| | | OutboundCount = outboundCount, |
| | | InStockPallet = inStockPallet, |
| | | FreeStockPallet = freeStockPallet, |
| | | CompleteTask = completeTask |
| | | CompleteTask = completeTask, |
| | | NearExpirationList = nearExpirationList |
| | | }; |
| | | return WebResponseContent.Instance.OK(data: bigGreenData); |
| | | } |
| | |
| | | // 3. æ¥è¯¢æ¯æ¥å
¥åºæç»ï¼ææ¥æåç»ï¼ |
| | | var dailyInboundList = _inboundOrderDetailRepository.Db |
| | | .Queryable<Dt_InboundOrderDetail>() |
| | | .Where(x => x.CreateDate != null // è¿æ»¤ç©ºæ¥æ |
| | | && x.CreateDate >= startDate |
| | | .Where(x => x.CreateDate >= startDate |
| | | && x.CreateDate < endDate.AddDays(1)) |
| | | .Select(x => new |
| | | { |
| | |
| | | public int FreeStockPallet { get; set; } |
| | | |
| | | public List<SimpleStatisticsDTO> CompleteTask { get; set; } |
| | | |
| | | public NearExpirationDTO NearExpirationList { get; set; } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | public int Count { get; set; } |
| | | } |
| | | |
| | | public class NearExpirationDTO |
| | | { |
| | | public int DaysToExpiration { get; set; } |
| | | |
| | | public List<Dt_StockInfoDetail> Details { get; set; } |
| | | |
| | | public string LocationCode { get; set; } |
| | | |
| | | public string PalletCode { get; set; } |
| | | } |
| | | |
| | | ///<summary> |
| | | ///è·åè¿30天è¦è¿æçç©æ |
| | | /// </summary> |
| | | public NearExpirationDTO GetMaterialsNearExpiration() |
| | | { |
| | | // åå§åè¿åDTO |
| | | var resultDTO = new NearExpirationDTO |
| | | { |
| | | Details = new List<Dt_StockInfoDetail>(), |
| | | LocationCode = string.Empty, |
| | | PalletCode = string.Empty, |
| | | DaysToExpiration = 0 // åå§åå¤©æ° |
| | | }; |
| | | |
| | | DateTime currentTime = DateTime.Now; |
| | | DateTime thirtyDaysLater = currentTime.AddDays(30); |
| | | |
| | | // çé30天å
è¿æçåºåæç» |
| | | var nearExpirationList = _stockInfoDetailRepository.Db.Queryable<Dt_StockInfoDetail>() |
| | | .Where(x => (x.ValidDate.Value - x.CreateDate).TotalDays <= 30) |
| | | .ToList(); |
| | | |
| | | // æ ç¬¦åæ¡ä»¶çæç»ï¼ç´æ¥è¿å |
| | | if (!nearExpirationList.Any()) |
| | | { |
| | | return resultDTO; |
| | | } |
| | | |
| | | |
| | | var firstStockId = nearExpirationList.First().StockId; |
| | | |
| | | var stock = _stockInfoRepository.Db.Queryable<Dt_StockInfo>() |
| | | .First(x => x.Id == firstStockId); |
| | | |
| | | |
| | | if (stock == null) |
| | | { |
| | | return resultDTO; |
| | | } |
| | | |
| | | |
| | | resultDTO.LocationCode = stock.LocationCode; |
| | | resultDTO.PalletCode = stock.PalletCode; |
| | | |
| | | |
| | | int minDaysToExpiration = int.MaxValue; |
| | | foreach (var detail in nearExpirationList) |
| | | { |
| | | |
| | | TimeSpan totalDaysToExpiration = detail.ValidDate.Value - detail.CreateDate; |
| | | double remainingDays = totalDaysToExpiration.TotalDays; |
| | | int daysToExpiration = (int)Math.Ceiling(Math.Max(0, remainingDays)); |
| | | |
| | | |
| | | if (daysToExpiration < minDaysToExpiration) |
| | | { |
| | | minDaysToExpiration = daysToExpiration; |
| | | } |
| | | |
| | | |
| | | resultDTO.Details.Add(detail); |
| | | } |
| | | |
| | | |
| | | resultDTO.DaysToExpiration = minDaysToExpiration; |
| | | |
| | | return resultDTO; |
| | | } |
| | | } |
| | | } |