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
};
}
}
}