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 = "WmsLocationType", Order = 100)] [Route("api/[Controller]")] public class WmsLocationTypeService : IWmsLocationTypeService, IDynamicApiController, ITransient { private readonly IRepository _wmsLocationTypeRep; public WmsLocationTypeService( IRepository wmsLocationTypeRep ) { _wmsLocationTypeRep = wmsLocationTypeRep; } /// /// 分页查询库位类型 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] WmsLocationTypeSearch input) { var wmsLocationTypes = await _wmsLocationTypeRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.WareLocationTypeCode), u => u.WareLocationTypeCode == input.WareLocationTypeCode) .Where(!string.IsNullOrEmpty(input.WareLocationTypeName), u => u.WareLocationTypeName == input.WareLocationTypeName) .Where(input.Status != null, u => u.Status == input.Status) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsLocationTypes; } /// /// 增加库位类型 /// /// /// [HttpPost("add")] public async Task Add(AddWmsLocationTypeInput input) { var wmsLocationType = input.Adapt(); await _wmsLocationTypeRep.InsertAsync(wmsLocationType); } /// /// 删除库位类型 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteWmsLocationTypeInput input) { var wmsLocationType = await _wmsLocationTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wmsLocationTypeRep.DeleteAsync(wmsLocationType); } /// /// 更新库位类型 /// /// /// [HttpPost("edit")] public async Task Update(UpdateWmsLocationTypeInput input) { var isExist = await _wmsLocationTypeRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var wmsLocationType = input.Adapt(); await _wmsLocationTypeRep.UpdateAsync(wmsLocationType,ignoreNullValues:true); } /// /// 获取库位类型 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWmsLocationTypeInput input) { return (await _wmsLocationTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取库位类型列表 /// /// /// [HttpGet("list")] public async Task List([FromQuery] WmsLocationTypeInput input) { //return await _wmsLocationTypeRep.DetachedEntities.ProjectToType().ToListAsync(); var list = await _wmsLocationTypeRep.DetachedEntities.ToListAsync(); return list.Select(e => new { Code = e.WareLocationTypeCode, Name = e.WareLocationTypeName }); } } }