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 = "ThreadStatusMonitor", Order = 100)] [Route("api/[Controller]")] public class ThreadStatusMonitorService : IThreadStatusMonitorService, IDynamicApiController, ITransient { private readonly IRepository _threadStatusMonitorRep; public ThreadStatusMonitorService( IRepository threadStatusMonitorRep ) { _threadStatusMonitorRep = threadStatusMonitorRep; } /// /// 分页查询线程状态监控表 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] ThreadStatusMonitorSearchInput input) { var threadStatusMonitors = await _threadStatusMonitorRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.Threadcode), u => u.Threadcode == input.Threadcode) .Where(!string.IsNullOrEmpty(input.Threadcname), u => u.Threadcname == input.Threadcname) .Where(input.BeginTime != null&&input.EndTime!=null, u => u.Threadlastmodifytime > input.BeginTime && u.Threadlastmodifytime < input.EndTime) .Where(input.Threadstatue > 0, u => u.Threadstatue == input.Threadstatue) .Where(!string.IsNullOrEmpty(input.ThreadId), u => u.ThreadId == input.ThreadId) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return threadStatusMonitors; } /// /// 增加线程状态监控表 /// /// /// [HttpPost("add")] public async Task Add(AddThreadStatusMonitorInput input) { var threadStatusMonitor = input.Adapt(); await _threadStatusMonitorRep.InsertAsync(threadStatusMonitor); } /// /// 删除线程状态监控表 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteThreadStatusMonitorInput input) { var threadStatusMonitor = await _threadStatusMonitorRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _threadStatusMonitorRep.DeleteAsync(threadStatusMonitor); } /// /// 更新线程状态监控表 /// /// /// [HttpPost("edit")] public async Task Update(UpdateThreadStatusMonitorInput input) { var isExist = await _threadStatusMonitorRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var threadStatusMonitor = input.Adapt(); await _threadStatusMonitorRep.UpdateAsync(threadStatusMonitor, ignoreNullValues: true); } /// /// 获取线程状态监控表 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeThreadStatusMonitorInput input) { return (await _threadStatusMonitorRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取线程状态监控表列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] ThreadStatusMonitorInput input) { return await _threadStatusMonitorRep.DetachedEntities.ProjectToType().ToListAsync(); } } }