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 { /// /// 历史任务记录服务 /// [ApiDescriptionSettings("统计查询", Name = "WareTaskBak", Order = 100)] [Route("api/[Controller]")] public class WareTaskBakService : ControllerBase, IWareTaskBakService, IDynamicApiController, ITransient { private readonly IRepository _wareTaskBakRep; private readonly IRepository _wareTaskSubBak; public WareTaskBakService( IRepository wareTaskBakRep, IRepository wareTaskSubBak ) { _wareTaskBakRep = wareTaskBakRep; _wareTaskSubBak = wareTaskSubBak; } /// /// 分页查询历史任务记录 /// /// /// [HttpGet("page")] public async Task> 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(input)) .ProjectToType() .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; } /// /// 增加历史任务记录 /// /// /// [HttpPost("add")] public async Task Add(AddWareTaskBakInput input) { var wareTaskBak = input.Adapt(); await _wareTaskBakRep.InsertAsync(wareTaskBak); } /// /// 删除历史任务记录 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteWareTaskBakInput input) { var wareTaskBak = await _wareTaskBakRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wareTaskBakRep.DeleteAsync(wareTaskBak); } /// /// 更新历史任务记录 /// /// /// [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(); await _wareTaskBakRep.UpdateAsync(wareTaskBak, ignoreNullValues: true); } /// /// 获取历史任务记录 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWareTaskBakInput input) { return (await _wareTaskBakRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取历史任务记录列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] WareTaskBakInput input) { return await _wareTaskBakRep.DetachedEntities.ProjectToType().ToListAsync(); } /// /// 查看详情 /// /// /// [HttpGet("details")] public async Task> ManualWare([FromQuery] WmsTaskDetailSearch input) { return await _wareTaskSubBak.Where(n => n.TaskId == input.Id).ToListAsync(); } /// /// 导出Excel /// /// 筛选条件 /// [HttpPost("download")] [AllowAnonymous] public async Task 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(input)) .ProjectToType().ToListAsync(); var excelBaseResult = new Excel2003Result(dataRecords, "库位表格" + DateTime.Now.ToString("yyyyMMdd"), false, "生产记录"); return File(excelBaseResult.GetExcelStream(), "application/vnd.ms-excel"); } } }