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 = "KnifeToolEquipmentMonitor", Order = 102)] [Route("api/[Controller]")] public class KnifeToolEquipmentMonitorService : IKnifeToolEquipmentMonitorService, IDynamicApiController, ITransient { private readonly IRepository _knifeToolEquipmentMonitorRep; private readonly IRepository _equipmentBaseInfoRep; private readonly IRepository _knifeToolEquipmentInfoRep; public KnifeToolEquipmentMonitorService( IRepository knifeToolEquipmentMonitorRep, IRepository equipmentBaseInfoRep, IRepository knifeToolEquipmentInfoRep ) { _knifeToolEquipmentMonitorRep = knifeToolEquipmentMonitorRep; _equipmentBaseInfoRep = equipmentBaseInfoRep; _knifeToolEquipmentInfoRep = knifeToolEquipmentInfoRep; } /// /// 分页查询设备刀具实时监控信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] KnifeToolEquipmentMonitorSearch input) { var knifeToolEquipmentMonitors = await (from knife in _knifeToolEquipmentMonitorRep.DetachedEntities join eqbaseinfo in _equipmentBaseInfoRep.DetachedEntities on knife.EquipmentID equals eqbaseinfo.EquipmentId into eqjoinEmpty from eqbaseinfo2 in eqjoinEmpty.DefaultIfEmpty() join info in _knifeToolEquipmentInfoRep.DetachedEntities on knife.EquipmentID equals info.EquipmentID into infoempty from infoempty2 in infoempty.DefaultIfEmpty() where knife.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID)? knife.EquipmentID: input.EquipmentID) where knife.WorkingProcedure == (string.IsNullOrEmpty(input.WorkingProcedure) ? knife.WorkingProcedure : input.WorkingProcedure) where infoempty2.KnifeToolID == (string.IsNullOrEmpty(input.KnifeToolID) ? infoempty2.KnifeToolID : input.KnifeToolID) select new KnifeToolEquipmentMonitorOutput { EquipmentID= knife.EquipmentID, EquipmentName= eqbaseinfo2.EquipmentName, WorkingProcedure = knife.WorkingProcedure, Remarks1 = knife.Remarks1, Remarks2 = knife.Remarks2, Remarks3 = knife.Remarks3, Id = knife.Id, }).Distinct() .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return knifeToolEquipmentMonitors; } /// /// 增加设备刀具实时监控信息 /// /// /// [HttpPost("add")] public async Task Add(AddKnifeToolEquipmentMonitorInput input) { var isExist = await _knifeToolEquipmentMonitorRep.AnyAsync(u => u.EquipmentID == input.EquipmentID&&u.WorkingProcedure==input.WorkingProcedure, false); if (isExist) throw Oops.Oh($"设备[{input.EquipmentID}]工序[{input.WorkingProcedure}]在系统中已存在,不允许重复添加!"); var knifeToolEquipmentMonitor = input.Adapt(); await _knifeToolEquipmentMonitorRep.InsertAsync(knifeToolEquipmentMonitor); } /// /// 删除设备刀具实时监控信息 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteKnifeToolEquipmentMonitorInput input) { var knifeToolEquipmentMonitor = await _knifeToolEquipmentMonitorRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _knifeToolEquipmentMonitorRep.DeleteAsync(knifeToolEquipmentMonitor); } /// /// 更新设备刀具实时监控信息 /// /// /// [HttpPost("edit")] public async Task Update(UpdateKnifeToolEquipmentMonitorInput input) { var isExist = await _knifeToolEquipmentMonitorRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var knifeToolEquipmentMonitor = input.Adapt(); await _knifeToolEquipmentMonitorRep.UpdateAsync(knifeToolEquipmentMonitor,ignoreNullValues:true); } /// /// 获取设备刀具实时监控信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeKnifeToolEquipmentMonitorInput input) { return (await _knifeToolEquipmentMonitorRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取设备刀具实时监控信息列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] KnifeToolEquipmentMonitorInput input) { return await _knifeToolEquipmentMonitorRep.DetachedEntities.ProjectToType().ToListAsync(); } } }