using Admin.NET.Core.Helper.ExcelHelper;
|
using Furion.DatabaseAccessor;
|
using Furion.DatabaseAccessor.Extensions;
|
using Furion.DependencyInjection;
|
using Furion.DynamicApiController;
|
using Furion.FriendlyException;
|
using iWare.Wms.Application.Service.WmsCount.WareTaskBak.Dto;
|
using iWare.Wms.Core;
|
using Mapster;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.EntityFrameworkCore;
|
using System.Linq.Dynamic.Core;
|
|
namespace iWare.Wms.Application
|
{
|
/// <summary>
|
/// 历史任务记录服务
|
/// </summary>
|
[ApiDescriptionSettings("统计查询", Name = "WareTaskBak", Order = 100)]
|
[Route("api/[Controller]")]
|
public class WareTaskBakService : ControllerBase, IWareTaskBakService, IDynamicApiController, ITransient
|
{
|
private readonly IRepository<WareTaskBak, MasterDbContextLocator> _wareTaskBakRep;
|
private readonly IRepository<WareTaskSubBak, MasterDbContextLocator> _wareTaskSubBak;
|
|
public WareTaskBakService(
|
IRepository<WareTaskBak, MasterDbContextLocator> wareTaskBakRep,
|
IRepository<WareTaskSubBak, MasterDbContextLocator> wareTaskSubBak
|
)
|
{
|
_wareTaskBakRep = wareTaskBakRep;
|
_wareTaskSubBak = wareTaskSubBak;
|
}
|
|
/// <summary>
|
/// 分页查询历史任务记录
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("page")]
|
public async Task<PageResult<WareTaskBakOutput>> Page([FromQuery] WareTaskBakSearch input)
|
{
|
if (input.ToLocationCode == "A线")
|
{
|
input.ToLocationCode = "A01";
|
}
|
if (input.ToLocationCode == "B线")
|
{
|
input.ToLocationCode = "B01";
|
}
|
if (input.ToLocationCode == "C线")
|
{
|
input.ToLocationCode = "C01";
|
}
|
if (input.FromLocationCode == "A线")
|
{
|
input.FromLocationCode = "A01";
|
}
|
if (input.FromLocationCode == "B线")
|
{
|
input.FromLocationCode = "B01";
|
}
|
if (input.FromLocationCode == "C线")
|
{
|
input.FromLocationCode = "C01";
|
}
|
|
|
var wareTaskBaks = await _wareTaskBakRep.DetachedEntities
|
.Where(!string.IsNullOrEmpty(input.OrderNo), u => u.OrderNo == input.OrderNo)
|
.Where(!string.IsNullOrEmpty(input.TaskNo), u => u.TaskNo == input.TaskNo)
|
.Where(!string.IsNullOrEmpty(input.TaskName), u => u.TaskName == input.TaskName)
|
.Where(input.TaskCategory != null, u => u.TaskCategory == input.TaskCategory)
|
.Where(input.TaskType != null, u => u.TaskType == input.TaskType)
|
.Where(input.TaskState != null, u => u.TaskState == input.TaskState)
|
.Where(!string.IsNullOrEmpty(input.TaskDescribe), u => u.TaskDescribe == input.TaskDescribe)
|
.Where(input.TaskPriority != null, u => u.TaskPriority == input.TaskPriority)
|
.Where(!string.IsNullOrEmpty(input.ContainerCode), u => u.ContainerCode == input.ContainerCode)
|
.Where(!string.IsNullOrEmpty(input.FromLocationCode), u => u.FromLocationCode == input.FromLocationCode)
|
.Where(!string.IsNullOrEmpty(input.ToLocationCode), u => u.ToLocationCode == input.ToLocationCode)
|
.Where(input.FinishedTime != null, u => u.FinishedTime == input.FinishedTime)
|
.Where(input.Lane != null, u => u.Lane == input.Lane)
|
.Where(input.MoveFlag != null, u => u.MoveFlag == input.MoveFlag)
|
.Where(!string.IsNullOrEmpty(input.MoveFromLocation), u => u.MoveFromLocation == input.MoveFromLocation)
|
.Where(!string.IsNullOrEmpty(input.MoveToLocation), u => u.MoveToLocation == input.MoveToLocation)
|
.Where(!string.IsNullOrEmpty(input.MoveContainerCode), u => u.MoveContainerCode == input.MoveContainerCode)
|
.Where(input.ContainerType != null, u => u.ContainerType == input.ContainerType)
|
.Where(!string.IsNullOrEmpty(input.OperationRemark), u => u.OperationRemark == input.OperationRemark)
|
.OrderBy(PageInputOrder.OrderBuilder<WareTaskBakSearch>(input))
|
.ProjectToType<WareTaskBakOutput>()
|
.ToADPagedListAsync(input.PageNo, input.PageSize);
|
foreach (var item in wareTaskBaks.Rows)
|
{
|
if (item.ToLocationCode.StartsWith("A"))
|
{
|
item.ToLocationCode = "A线";
|
}
|
if (item.ToLocationCode.StartsWith("B"))
|
{
|
item.ToLocationCode = "B线";
|
}
|
if (item.ToLocationCode.StartsWith("C"))
|
{
|
item.ToLocationCode = "C线";
|
}
|
if (item.FromLocationCode.StartsWith("A"))
|
{
|
item.FromLocationCode = "A线";
|
}
|
if (item.FromLocationCode.StartsWith("B"))
|
{
|
item.FromLocationCode = "B线";
|
}
|
if (item.FromLocationCode.StartsWith("C"))
|
{
|
item.FromLocationCode = "C线";
|
}
|
}
|
|
return wareTaskBaks;
|
}
|
|
/// <summary>
|
/// 增加历史任务记录
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("add")]
|
public async Task Add(AddWareTaskBakInput input)
|
{
|
var wareTaskBak = input.Adapt<WareTaskBak>();
|
await _wareTaskBakRep.InsertAsync(wareTaskBak);
|
}
|
|
/// <summary>
|
/// 删除历史任务记录
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("delete")]
|
public async Task Delete(DeleteWareTaskBakInput input)
|
{
|
var wareTaskBak = await _wareTaskBakRep.FirstOrDefaultAsync(u => u.Id == input.Id);
|
await _wareTaskBakRep.DeleteAsync(wareTaskBak);
|
}
|
|
/// <summary>
|
/// 更新历史任务记录
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("edit")]
|
public async Task Update(UpdateWareTaskBakInput input)
|
{
|
var isExist = await _wareTaskBakRep.AnyAsync(u => u.Id == input.Id, false);
|
if (!isExist) throw Oops.Oh(ErrorCode.D3000);
|
|
var wareTaskBak = input.Adapt<WareTaskBak>();
|
await _wareTaskBakRep.UpdateAsync(wareTaskBak, ignoreNullValues: true);
|
}
|
|
/// <summary>
|
/// 获取历史任务记录
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("detail")]
|
public async Task<WareTaskBakOutput> Get([FromQuery] QueryeWareTaskBakInput input)
|
{
|
return (await _wareTaskBakRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WareTaskBakOutput>();
|
}
|
|
/// <summary>
|
/// 获取历史任务记录列表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("list")]
|
public async Task<List<WareTaskBakOutput>> List([FromQuery] WareTaskBakInput input)
|
{
|
return await _wareTaskBakRep.DetachedEntities.ProjectToType<WareTaskBakOutput>().ToListAsync();
|
}
|
|
/// <summary>
|
/// 查看详情
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("details")]
|
public async Task<List<WareTaskSubBak>> ManualWare([FromQuery] WmsTaskDetailSearch input)
|
{
|
return await _wareTaskSubBak.Where(n => n.TaskId == input.Id).ToListAsync();
|
}
|
|
|
/// <summary>
|
/// 导出Excel
|
/// </summary>
|
/// <param name="input">筛选条件</param>
|
/// <returns></returns>
|
[HttpPost("download")]
|
[AllowAnonymous]
|
public async Task<ActionResult> Download([FromBody] WareTaskBakSearch input)
|
{
|
if (input.ToLocationCode == "A线")
|
{
|
input.ToLocationCode = "A01";
|
}
|
if (input.ToLocationCode == "B线")
|
{
|
input.ToLocationCode = "B01";
|
}
|
if (input.ToLocationCode == "C线")
|
{
|
input.ToLocationCode = "C01";
|
}
|
if (input.FromLocationCode == "A线")
|
{
|
input.FromLocationCode = "A01";
|
}
|
if (input.FromLocationCode == "B线")
|
{
|
input.FromLocationCode = "B01";
|
}
|
if (input.FromLocationCode == "C线")
|
{
|
input.FromLocationCode = "C01";
|
}
|
|
var dataRecords = await _wareTaskBakRep.DetachedEntities
|
.Where(!string.IsNullOrEmpty(input.OrderNo), u => u.OrderNo == input.OrderNo)
|
.Where(!string.IsNullOrEmpty(input.TaskNo), u => u.TaskNo == input.TaskNo)
|
.Where(!string.IsNullOrEmpty(input.TaskName), u => u.TaskName == input.TaskName)
|
.Where(input.TaskCategory != null, u => u.TaskCategory == input.TaskCategory)
|
.Where(input.TaskType != null, u => u.TaskType == input.TaskType)
|
.Where(input.TaskState != null, u => u.TaskState == input.TaskState)
|
.Where(!string.IsNullOrEmpty(input.TaskDescribe), u => u.TaskDescribe == input.TaskDescribe)
|
.Where(input.TaskPriority != null, u => u.TaskPriority == input.TaskPriority)
|
.Where(!string.IsNullOrEmpty(input.ContainerCode), u => u.ContainerCode == input.ContainerCode)
|
.Where(!string.IsNullOrEmpty(input.FromLocationCode), u => u.FromLocationCode == input.FromLocationCode)
|
.Where(!string.IsNullOrEmpty(input.ToLocationCode), u => u.ToLocationCode == input.ToLocationCode)
|
.Where(input.FinishedTime != null, u => u.FinishedTime == input.FinishedTime)
|
.Where(input.Lane != null, u => u.Lane == input.Lane)
|
.Where(input.MoveFlag != null, u => u.MoveFlag == input.MoveFlag)
|
.Where(!string.IsNullOrEmpty(input.MoveFromLocation), u => u.MoveFromLocation == input.MoveFromLocation)
|
.Where(!string.IsNullOrEmpty(input.MoveToLocation), u => u.MoveToLocation == input.MoveToLocation)
|
.Where(!string.IsNullOrEmpty(input.MoveContainerCode), u => u.MoveContainerCode == input.MoveContainerCode)
|
.Where(input.ContainerType != null, u => u.ContainerType == input.ContainerType)
|
.Where(!string.IsNullOrEmpty(input.OperationRemark), u => u.OperationRemark == input.OperationRemark)
|
.OrderBy(PageInputOrder.OrderBuilder<WareTaskBakSearch>(input))
|
.ProjectToType<WareTaskBakExcel>().ToListAsync();
|
|
var excelBaseResult = new Excel2003Result<WareTaskBakExcel>(dataRecords, "库位表格" + DateTime.Now.ToString("yyyyMMdd"), false, "生产记录");
|
return File(excelBaseResult.GetExcelStream(), "application/vnd.ms-excel");
|
}
|
}
|
}
|