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 = "WareSite", Order = 100)] [Route("api/[Controller]")] public class WareSiteService : IWareSiteService, IDynamicApiController, ITransient { private readonly IRepository _wareSiteRep; public WareSiteService( IRepository wareSiteRep ) { _wareSiteRep = wareSiteRep; } /// /// 分页查询站点信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] WareSiteSearch input) { var wareSites = await _wareSiteRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name) .Where(!string.IsNullOrEmpty(input.Code), u => u.Code == input.Code) .Where(input.LineType != null, u => u.LineType == input.LineType) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return wareSites; } /// /// 增加站点信息 /// /// /// [HttpPost("add")] public async Task Add(AddWareSiteInput input) { var wareSite = input.Adapt(); await _wareSiteRep.InsertAsync(wareSite); } /// /// 删除站点信息 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteWareSiteInput input) { var wareSite = await _wareSiteRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wareSiteRep.DeleteAsync(wareSite); } /// /// 更新站点信息 /// /// /// [HttpPost("edit")] public async Task Update(UpdateWareSiteInput input) { var isExist = await _wareSiteRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var wareSite = input.Adapt(); await _wareSiteRep.UpdateAsync(wareSite,ignoreNullValues:false); } /// /// 获取站点信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWareSiteInput input) { return (await _wareSiteRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取站点信息列表 /// /// /// [HttpGet("list")] public async Task List([FromQuery] WareSiteInput input) { //return await _wareSiteRep.DetachedEntities.ProjectToType().ToListAsync(); return await _wareSiteRep.DetachedEntities.Where(u => u.SiteType == Core.Enum.SiteTypeEnum.AGV站台).Select(u => new { lineType = u.LineType,code = u.Code, name = u.Name }).ToListAsync(); } } }