| | |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_DTO.WMS; |
| | | using WIDESEA_IOrderRepository; |
| | | using WIDESEA_IOrderServices; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Model.Models.Order; |
| | | using WIDESEA_OrderRepository; |
| | |
| | | { |
| | | private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository; |
| | | private readonly IDt_InboundOrderRepository _inboundOrderRepository; |
| | | private readonly IDt_InboundOrderService _inboundOrderService; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IStockInfoDetailRepository _stockInfoDetailRepository; |
| | | private readonly IDt_TaskService _taskService; |
| | | private readonly ILocationInfoRepository _locationRepository; |
| | | private readonly IDt_TaskRepository _taskRepository; |
| | | private readonly IDt_Task_HtyRepository _task_HtyRepository; |
| | | private readonly IDt_OrderOutDetailsRepository _outDetailsRepository; |
| | | |
| | | public StockInfoService(IStockInfoRepository BaseDal, |
| | |
| | | IDt_TaskService taskService, |
| | | ILocationInfoRepository locationRepository, |
| | | IDt_TaskRepository taskRepository, |
| | | IDt_OrderOutDetailsRepository outDetailsRepository) : base(BaseDal) |
| | | IDt_OrderOutDetailsRepository outDetailsRepository, |
| | | IDt_Task_HtyRepository task_HtyRepository, |
| | | IDt_InboundOrderService inboundOrderService) : base(BaseDal) |
| | | { |
| | | _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository; |
| | | _inboundOrderRepository = inboundOrderRepository; |
| | |
| | | _locationRepository = locationRepository; |
| | | _taskRepository = taskRepository; |
| | | _outDetailsRepository = outDetailsRepository; |
| | | _task_HtyRepository = task_HtyRepository; |
| | | _inboundOrderService = inboundOrderService; |
| | | } |
| | | #region æ¹æ³éå |
| | | /// <summary> |
| | |
| | | { |
| | | var stocks = await _stockInfoDetailRepository.QueryDataAsync(x => true); |
| | | var orderdetail = SqlSugarHelper.DbWMS.Queryable<Dt_OrderOutDetails_Hty>().Where(x => true).ToList(); |
| | | var task = _taskRepository.QueryData(x => true).ToList(); |
| | | |
| | | // è·åUTCå½åæ¶é´ |
| | | DateTime utcNow = DateTime.UtcNow; |
| | |
| | | DateTime firstDayOfMonth = new DateTime(utcNow.Year, utcNow.Month, 1); |
| | | DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddSeconds(-1); |
| | | |
| | | // 计ç®ä¸ææ¶é´èå´ |
| | | DateTime firstDayOfLastMonth = new DateTime(utcNow.Year, utcNow.Month, 1).AddMonths(-1); |
| | | DateTime lastDayOfLastMonth = firstDayOfLastMonth.AddMonths(1).AddSeconds(-1); |
| | | |
| | | // 计ç®å½å¤©æ¶é´èå´ |
| | | DateTime todayStart = utcNow.Date; |
| | | DateTime todayEnd = todayStart.AddDays(1).AddTicks(-1); |
| | | |
| | | // è®¡ç®æ¨æ¥æ¶é´èå´ |
| | | DateTime startOfPreviousDay = utcNow.AddDays(-1).Date; // åä¸å¤©ç 00:00:00 |
| | | DateTime endOfPreviousDay = startOfPreviousDay.AddDays(1).AddSeconds(-1); |
| | | |
| | | // æ¥è¯¢å½ææ°æ® |
| | | var currentMonthInStocks = stocks.Where(x => x.CreateDate >= firstDayOfMonth && x.CreateDate <= lastDayOfMonth).Sum(x => x.Quantity); |
| | | var currentMonthOutStocks = orderdetail.Where(x => x.CreateDate >= firstDayOfMonth && x.CreateDate <= lastDayOfMonth).Sum(x => x.OutboundQuantity); |
| | | |
| | | // æ¥è¯¢å½æ¥æ°æ® |
| | | //æ¥è¯¢ä¸ææ°æ® |
| | | var currentMonthInStocksLastMonth = stocks.Where(x => x.CreateDate >= firstDayOfLastMonth && x.CreateDate <= lastDayOfLastMonth).Sum(x => x.Quantity); |
| | | var currentMonthOutStocksLastMonth = orderdetail.Where(x => x.CreateDate >= firstDayOfLastMonth && x.CreateDate <= lastDayOfLastMonth).Sum(x => x.OutboundQuantity); |
| | | |
| | | // æ¥è¯¢ä»æ¥æ°æ® |
| | | var currentDayInStocks = stocks.Where(x => x.CreateDate >= todayStart && x.CreateDate <= todayEnd).Sum(x => x.Quantity); |
| | | var currentDayOutStocks = orderdetail.Where(x => x.CreateDate >= todayStart && x.CreateDate <= todayEnd).Sum(x => x.OutboundQuantity); |
| | | |
| | | // æ¥è¯¢æ¨å¤©æ¥æ°æ® |
| | | var currentDayInStocksLast = stocks.Where(x => x.CreateDate >= startOfPreviousDay && x.CreateDate <= endOfPreviousDay).Sum(x => x.Quantity); |
| | | var currentDayOutStocksLast = orderdetail.Where(x => x.CreateDate >= startOfPreviousDay && x.CreateDate <= endOfPreviousDay).Sum(x => x.OutboundQuantity); |
| | | |
| | | // çææè¿7天çåºå
¥åºæ°æ® |
| | | var last7Days = Enumerable.Range(0, 7) |
| | |
| | | var inboundData = last7Days.Select(date => new |
| | | { |
| | | Date = date.ToString("MM-dd"), |
| | | Value = stocks.Where(x => x.CreateDate.Date == date).Sum(x => x.Quantity) |
| | | Value = stocks.Where(x => x.CreateDate.Date == date).Sum(x => x.Quantity), |
| | | }).ToList(); |
| | | |
| | | var outboundData = last7Days.Select(date => new |
| | |
| | | metrics = new List<object>{ |
| | | new { |
| | | name = "仿¥è¿åºé", |
| | | value = currentDayInStocks |
| | | value = currentDayInStocks, |
| | | compare =currentDayInStocks-currentDayInStocksLast, |
| | | }, |
| | | new { |
| | | name = "仿¥åºåºé", |
| | | value = currentDayOutStocks |
| | | value = currentDayOutStocks, |
| | | compare =currentDayOutStocks-currentDayOutStocksLast, |
| | | }, |
| | | new { |
| | | name = "æ¬æè¿åºé", |
| | | value = currentMonthInStocks |
| | | value = currentMonthInStocks, |
| | | compare =currentMonthInStocks-currentMonthInStocksLastMonth, |
| | | }, |
| | | new { |
| | | name = "æ¬æåºåºé", |
| | | value = currentMonthOutStocks |
| | | value = currentMonthOutStocks, |
| | | compare = currentMonthOutStocks - currentMonthOutStocksLastMonth, |
| | | }, |
| | | new { |
| | | name = "åºåæ»é", |
| | |
| | | dates = MonthSumData.Select(x => x.Date).ToArray(), |
| | | inValue = MonthSumData.Select(x => x.InValue).ToArray(), |
| | | outValue = MonthSumData.Select(x => x.OutValue).ToArray(), |
| | | } |
| | | }, |
| | | newTask = task.Select(x => new |
| | | { |
| | | x.PalletCode, |
| | | x.Roadway, |
| | | x.SourceAddress, |
| | | x.TargetAddress, |
| | | x.ErrorMessage, |
| | | x.CreateDate, |
| | | TaskType = EnumHelper.GetDescriptionFromEnums(x.TaskType, typeof(TaskOutboundTypeEnum), typeof(TaskInboundTypeEnum), typeof(TaskAcrossFloorTypeEnum), typeof(TaskRelocationTypeEnum), typeof(TaskAGVCarryTypeEnum)), |
| | | TaskState = EnumHelper.GetDescriptionFromEnums(x.TaskState, typeof(TaskInStatusEnum), typeof(TaskOutStatusEnum), typeof(TaskAcrossFloorStatusEnum), typeof(TaskRelocationStatusEnum), typeof(TaskAGVCarryStatusEnum)) |
| | | }).ToList() |
| | | }; |
| | | |
| | | return content.OK(data: obj); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | return content.Error("ç³»ç»é误ï¼è¯·è系管çå"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region æå°åºååä¸ªç©æäºç»´ç |
| | | public async Task<WebResponseContent> PrintOrder(object[] key) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_InboundOrder> inboundOrders = new List<Dt_InboundOrder>(); |
| | | foreach (var item in key) |
| | | { |
| | | var order = _inboundOrderRepository.QueryFirst(x => x.OrderNo == item.ToString()); |
| | | if (order != null) |
| | | { |
| | | inboundOrders.Add(order); |
| | | } |
| | | } |
| | | return _inboundOrderService.PrintInbound(inboundOrders); ; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error("æªç¥é误ï¼è¯·è系管çå"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |