using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SqlSugar; using SqlSugar.Extensions; using System.Threading.Tasks; using WIDESEA_Common.TaskEnum; using WIDESEA_Core; using WIDESEA_Core.Enums; using WIDESEA_DTO.LargeScreen; using WIDESEA_IBasicService; using WIDESEA_IInboundRepository; using WIDESEA_IOutboundRepository; using WIDESEA_IStockRepository; using WIDESEA_ITaskInfoRepository; using WIDESEA_Model.Models; using WIDESEAWCS_DTO.WCSInfo; namespace WIDESEA_WMSServer.Controllers { [Route("api/LargeScreen")] [ApiController, AllowAnonymous] public class LargeScreenController : Controller { private readonly ILocationInfoService _locationInfoService; private readonly ITaskRepository _taskRepository; private readonly ITask_HtyRepository _taskHtyRepository; private readonly IStockInfoDetailRepository _stockInfoDetailRepository; private readonly IInboundOrderDetailRepository _inboundOrderDetailRepository; private readonly IInboundOrderRepository _inboundOrderRepository; private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository; private readonly IOutboundOrderRepository _outboundOrderRepository; public LargeScreenController(ILocationInfoService locationInfoService, ITaskRepository taskRepository, ITask_HtyRepository taskHtyRepository, IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IStockInfoDetailRepository stockInfoDetailRepository) { _locationInfoService = locationInfoService; _taskRepository = taskRepository; _taskHtyRepository = taskHtyRepository; _inboundOrderDetailRepository = inboundOrderDetailRepository; _inboundOrderRepository = inboundOrderRepository; _outboundOrderDetailRepository = outboundOrderDetailRepository; _outboundOrderRepository = outboundOrderRepository; _stockInfoDetailRepository = stockInfoDetailRepository; } [HttpPost, Route("GetStockInfos")] public WebResponseContent GetStockInfos() { WebResponseContent webResponseContent = new WebResponseContent(); List _StockInfoDetails = _stockInfoDetailRepository.QueryData(x => x.Status == StockStatusEmun.已入库.ObjToInt()); List stocks = new List(); foreach (var item in _StockInfoDetails.GroupBy(x => x.MaterielCode)) { StockInfo stockInfo = new StockInfo() { Name = item.First().MaterielName, Qty = item.ToList().Count() }; stocks.Add(stockInfo); } return webResponseContent.OK(data: stocks.OrderByDescending(x => x.Qty)); } public class StockInfo { public string Name { get; set; } public int Qty { get; set; } } [HttpPost, Route("GetLocationInfo")] public WebResponseContent GetLocationInfo([FromBody] SaveModel model) { return _locationInfoService.GetLocationInfo(model); } /// /// 获取工单信息 /// /// /// [HttpPost, Route("GetBoundOrder")] public WebResponseContent GetBoundOrder([FromBody] SaveModel model) { WebResponseContent webResponseContent = new WebResponseContent(); try { var name = model.MainData["Name"].ToString(); List boundOrderDTOs = new List(); if (name == "入库") { List inboundOrders = _inboundOrderRepository.QueryData(x => true); List inboundOrderDetails = _inboundOrderDetailRepository.QueryData(y => inboundOrders.Select(x => x.Id).ToList().Contains(y.OrderId)); foreach (var item in inboundOrderDetails) { Dt_InboundOrder _InboundOrder = inboundOrders.Where(x => x.Id == item.OrderId).First(); BoundOrderDTO boundOrderDTO = new BoundOrderDTO() { OrderNo = _InboundOrder.OrderNo, BatchNo = item.BatchNo, MaterielCode = item.MaterielCode, MaterielName = item.MaterielName, OrderDetailStatus = item.OrderDetailStatus, OrderQuantity = item.OrderQuantity, OrderType = _InboundOrder.OrderType, OverInQuantity = item.OverInQuantity, }; boundOrderDTOs.Add(boundOrderDTO); } } else { List outboundOrders = _outboundOrderRepository.QueryData(x => true); List outboundOrderDetails = _outboundOrderDetailRepository.QueryData(y => outboundOrders.Select(x => x.Id).ToList().Contains(y.OrderId)); foreach (var item in outboundOrderDetails) { Dt_OutboundOrder _OutboundOrder = outboundOrders.Where(x => x.Id == item.OrderId).First(); BoundOrderDTO boundOrderDTO = new BoundOrderDTO() { OrderNo = _OutboundOrder.OrderNo, BatchNo = item.BatchNo, MaterielCode = item.MaterielCode, MaterielName = item.MaterielName, OrderDetailStatus = item.OrderDetailStatus, OrderQuantity = item.OrderQuantity, OrderType = _OutboundOrder.OrderType, OverInQuantity = item.OverOutQuantity, }; boundOrderDTOs.Add(boundOrderDTO); } } webResponseContent.OK(data: boundOrderDTOs); } catch (Exception ex) { webResponseContent.Error(ex.Message); } return webResponseContent; } [HttpPost, Route("GetTaskInfos")] public WebResponseContent GetTaskInfos() { WebResponseContent webResponseContent = new WebResponseContent(); var date = DateTime.Now; var date1 = DateTime.Today.AddDays(-1); List Task_YearHties = _taskHtyRepository.QueryData(x => x.InsertTime.Year == date.Year).ToList(); List Task_Hties = Task_YearHties.Where(x => x.InsertTime.Date == date.Date).ToList(); List ZTask_Hties = Task_YearHties.Where(x => x.InsertTime.Date == date1.Date).ToList(); List _Task_InYearHties = Task_YearHties.Where(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList(); List _Task_OutYearHties = Task_YearHties.Where(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList(); List _Task_InMonthHties = _Task_InYearHties.Where(x => x.InsertTime.Month == date.Month).ToList(); List _Task_OutMonthHties = _Task_OutYearHties.Where(x => x.InsertTime.Month == date.Month).ToList(); List _Task_InHties = _Task_InMonthHties.Where(x => x.InsertTime.Day == date.Day).ToList(); List _Task_OutHties = _Task_OutMonthHties.Where(x => x.InsertTime.Day == date.Day).ToList(); List _Task_ZInHties = _Task_InMonthHties.Where(x => x.InsertTime.Day == date1.Day).ToList(); List _Task_ZOutHties = _Task_OutMonthHties.Where(x => x.InsertTime.Day == date1.Day).ToList(); webResponseContent.OK(data: new { InYearHties = _Task_InYearHties.Count, OutYearHties = _Task_OutYearHties.Count, InMonthHties = _Task_InMonthHties.Count, OutMonthHties = _Task_OutMonthHties.Count, InHties = _Task_InHties.Count, OutHties = _Task_OutHties.Count, Hties = Task_Hties.Count, ZHties = ZTask_Hties.Count, ZInHties = _Task_ZInHties.Count, ZOutHties = _Task_ZOutHties.Count, }); return webResponseContent; } [HttpPost, Route("GetTask")] public WebResponseContent GetTask([FromBody] SaveModel model) { WebResponseContent webResponseContent = new WebResponseContent(); var name = model.MainData["Name"].ToString(); List task_Hties = new List(); if (name != "入库") { task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList(); var task_htys = task_Hties.Where(x => x.InsertTime.Date == DateTime.Now.Date).ToList(); var tasks = _taskRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList(); List outboundOrderDetails = _outboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus < OrderDetailStatusEnum.Outbound.ObjToInt()).ToList(); webResponseContent.OK(data: new { task_Htiesqty = task_Hties.Count, task_htysqty = task_htys.Count, tasksqty = tasks.Count, inboundOrderDetailsqty = outboundOrderDetails.Sum(x => x.OrderQuantity - x.OverOutQuantity) }); } else { task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList(); var task_htys = task_Hties.Where(x => x.InsertTime.Date == DateTime.Now.Date).ToList(); var tasks = _taskRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList(); List inboundOrderDetails = _inboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus <= OrderDetailStatusEnum.GroupAndInbound.ObjToInt()).ToList(); webResponseContent.OK(data: new { task_Htiesqty = task_Hties.Count, task_htysqty = task_htys.Count, tasksqty = tasks.Count, inboundOrderDetailsqty = inboundOrderDetails.Sum(x => x.OrderQuantity - x.OverInQuantity) }); } return webResponseContent; } } }