using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; 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 = "KnifeToolDataMonitor", Order = 100)] [Route("api/[Controller]")] public class KnifeToolDataMonitorService : IKnifeToolDataMonitorService, IDynamicApiController, ITransient { private readonly IRepository _knifeToolDataMonitorRep; public KnifeToolDataMonitorService( IRepository knifeToolDataMonitorRep ) { _knifeToolDataMonitorRep = knifeToolDataMonitorRep; } /// /// 分页查询刀具监控 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] KnifeToolDataMonitorSearch input) { var knifeToolDataMonitors = await _knifeToolDataMonitorRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.KnifeToolID), u => u.KnifeToolID == input.KnifeToolID) .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.EquipmentID == input.EquipmentID) .Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => u.WorkingProcedure == input.WorkingProcedure) .Where(!string.IsNullOrEmpty(input.KnifeToolName), u => u.KnifeToolName == input.KnifeToolName) .Where(!string.IsNullOrEmpty(input.KnifeToolCode), u => u.KnifeToolCode == input.KnifeToolCode) .Where(!string.IsNullOrEmpty(input.KnifeToolModel), u => u.KnifeToolModel == input.KnifeToolModel) .Where(input.KnifeEdgeNumber != null, u => u.KnifeEdgeNumber == input.KnifeEdgeNumber) .Where(!string.IsNullOrEmpty(input.KnifeToolInsideID), u => u.KnifeToolInsideID == input.KnifeToolInsideID) .Where(!string.IsNullOrEmpty(input.KnifeWareHouseID), u => u.KnifeWareHouseID == input.KnifeWareHouseID) .Where(!string.IsNullOrEmpty(input.KnifePositionID), u => u.KnifePositionID == input.KnifePositionID) .Where(input.KnifeToolLife != null, u => u.KnifeToolLife == input.KnifeToolLife) .Where(input.KnifeToolEstimateLife != null, u => u.KnifeToolEstimateLife == input.KnifeToolEstimateLife) .Where(input.KnifeToolEarlyWarningLife != null, u => u.KnifeToolEarlyWarningLife == input.KnifeToolEarlyWarningLife) .Where(input.KnifeToolSurplusLife != null, u => u.KnifeToolSurplusLife == input.KnifeToolSurplusLife) .Where(!string.IsNullOrEmpty(input.Remarks1), u => u.Remarks1 == input.Remarks1) .Where(!string.IsNullOrEmpty(input.Remarks2), u => u.Remarks2 == input.Remarks2) .Where(!string.IsNullOrEmpty(input.Remarks3), u => u.Remarks3 == input.Remarks3) .Where(!string.IsNullOrEmpty(input.Remarks4), u => u.Remarks4 == input.Remarks4) .Where(!string.IsNullOrEmpty(input.Remarks5), u => u.Remarks5 == input.Remarks5) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return knifeToolDataMonitors; } /// /// 增加刀具监控 /// /// /// [HttpPost("add")] public async Task Add(AddKnifeToolDataMonitorInput input) { var knifeToolDataMonitor = input.Adapt(); await _knifeToolDataMonitorRep.InsertAsync(knifeToolDataMonitor); } /// /// 删除刀具监控 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteKnifeToolDataMonitorInput input) { var knifeToolDataMonitor = await _knifeToolDataMonitorRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _knifeToolDataMonitorRep.DeleteAsync(knifeToolDataMonitor); } /// /// 更新刀具监控 /// /// /// [HttpPost("edit")] public async Task Update(UpdateKnifeToolDataMonitorInput input) { var isExist = await _knifeToolDataMonitorRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var knifeToolDataMonitor = input.Adapt(); await _knifeToolDataMonitorRep.UpdateAsync(knifeToolDataMonitor,ignoreNullValues:true); } /// /// 获取刀具监控 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeKnifeToolDataMonitorInput input) { return (await _knifeToolDataMonitorRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取刀具监控列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] KnifeToolDataMonitorInput input) { return await _knifeToolDataMonitorRep.DetachedEntities.ProjectToType().ToListAsync(); } } }