using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using iWare.Wms.Core; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; namespace iWare.Wms.Application { /// /// 首页 /// [ApiDescriptionSettings("首页", Name = "LocationView", Order = 100)] [Route("api/[Controller]")] public class IndexCountService : IIndexCountService, IDynamicApiController, ITransient { private readonly IRepository _wmsContainerRep; private readonly IRepository _wmsMaterialRep; private readonly IRepository _wmsMaterialContainerRep; private readonly IRepository _wmsAreaRep; private readonly IRepository _wmsPlaceRep; private readonly IRepository _wmsTaskRep; private readonly IRepository _wmsMaterialStockRep; private readonly IRepository _wmsContainerPlaceRep; private readonly IRepository _wareTaskSubBak; public IndexCountService( IRepository wmsContainerRep, IRepository wmsMaterialRep, IRepository wmsMaterialContainerRep, IRepository wmsAreaRep, IRepository wmsPlaceRep, IRepository wmsTaskRep, IRepository wmsMaterialStockRep, IRepository wmsContainerPlaceRep, IRepository wareTaskSubBak ) { _wmsContainerRep = wmsContainerRep; _wmsMaterialRep = wmsMaterialRep; _wmsMaterialContainerRep = wmsMaterialContainerRep; _wmsAreaRep = wmsAreaRep; _wmsPlaceRep = wmsPlaceRep; _wmsTaskRep = wmsTaskRep; _wmsMaterialStockRep = wmsMaterialStockRep; _wmsContainerPlaceRep = wmsContainerPlaceRep; _wareTaskSubBak = wareTaskSubBak; } /// /// 获取当日任务执行信息 /// /// /// [HttpGet("GetTaskCount")] public async Task GetTaskCount() { var taskList = await _wmsTaskRep.Where(p => p.CreatedTime >= DateTime.Now.Date).ToListAsync(); var count = await _wareTaskSubBak.Where(p => p.CreatedTime >= DateTime.Now.Date && p.TaskType == (int)Core.Enum.TaskCategoryEnum.移库任务).ToListAsync(); return new TaskCountOtput() { chukuNum = taskList.Where(n => n.TaskCategory == (int)Core.Enum.TaskCategoryEnum.出库任务).Count(), rukuNum = taskList.Where(n => n.TaskCategory == (int)Core.Enum.TaskCategoryEnum.入库任务).Count(), yikuNum = count.Count(), }; } /// /// 获取任务执行明细 /// /// /// //[HttpGet("GetTaskDetail")] public async Task> GetTaskDetail([FromQuery] TaskDetailInput input) { //近七天 int days = 0; if (input.LookType == 1) days = -7; else if (input.LookType == 2) days = -30; else days = -90; var taskList = await _wmsTaskRep.Where(p => p.CreatedTime >= DateTime.Now.Date.AddDays(days)).OrderByDescending(n => n.CreatedTime).ToListAsync(); var TaskDetailOtputList = new List(); for (int i = 0; i >= days; i--) { var starttime = DateTime.Now.Date.AddDays(i); var endtime = DateTime.Now.Date.AddDays(i + 1); var areaTaskList = taskList.Where(p => p.CreatedTime >= starttime && p.CreatedTime <= endtime).ToList(); var model = new TaskDetailOtput() { chukuNum = areaTaskList.Where(n => n.TaskCategory == (int)Core.Enum.TaskCategoryEnum.出库任务).Count(), rukuNum = areaTaskList.Where(n => n.TaskCategory == (int)Core.Enum.TaskCategoryEnum.入库任务).Count(), dateStr = starttime.ToString("MM/dd") }; TaskDetailOtputList.Add(model); } return TaskDetailOtputList; } /// /// 库位信息 /// /// /// [HttpGet("GetPalceDetail")] public async Task GetPalceDetailOtput() { var palceList = await _wmsPlaceRep.Where(p => p.IsDeleted == false).ToListAsync(); var countNum = palceList.Count; var cunhuoNum = palceList.Where(n => n.PlaceStatus == Core.Enum.PlaceStatus.CUNHUO && n.EmptyContainer == YesOrNot.N).Count(); var emptyNum = palceList.Where(n => n.PlaceStatus == Core.Enum.PlaceStatus.KONGXIAN).Count(); var emptyContainerNum = palceList.Where(p => p.EmptyContainer == YesOrNot.Y && p.PlaceStatus == Core.Enum.PlaceStatus.CUNHUO).Count(); //var cunhuoBFB = Convert.ToDecimal(((countNum - emptyNum- emptyContainerNum) / countNum) * 100); // var emptyContainerBFB = Convert.ToDecimal(((countNum - cunhuoNum- emptyNum) / countNum) * 100); //var emptyBFB = Convert.ToDecimal(((countNum - cunhuoNum- emptyContainerNum) / countNum) * 100); return new PalceDetailOtput() { countNum= countNum, cunhuoNum= cunhuoNum, emptyNum= emptyNum, emptyContainerNum= emptyContainerNum }; } } }