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 = "WmsArea", Order = 100)] [Route("api/[Controller]")] public class WmsAreaService : IWmsAreaService, IDynamicApiController, ITransient { private readonly IRepository _wmsAreaRep; public WmsAreaService( IRepository wmsAreaRep ) { _wmsAreaRep = wmsAreaRep; } /// /// 分页查询库区信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] WmsAreaSearch input) { var wmsAreas = await _wmsAreaRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.Areaname), u => EF.Functions.Like(u.AreaName, $"%{input.Areaname.Trim()}%")) .Where(input.Areatype != null, u => u.AreaType == input.Areatype) .Where(input.Areastatus != null, u => u.AreaStatus == input.Areastatus) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsAreas; } /// /// 增加库区信息 /// /// /// [HttpPost("add")] public async Task Add(AddWmsAreaInput input) { var isExit = await _wmsAreaRep.AnyAsync(n => n.AreaName == input.Areaname); if (isExit) throw Oops.Oh("存在的相同的库区名称!"); var wmsArea = input.Adapt(); await _wmsAreaRep.InsertAsync(wmsArea); } /// /// 删除库区信息 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteWmsAreaInput input) { var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wmsAreaRep.DeleteAsync(wmsArea); } /// /// 更新库区信息 /// /// /// [HttpPost("edit")] public async Task Update(UpdateWmsAreaInput input) { var isExist = await _wmsAreaRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var wmsArea = input.Adapt(); await _wmsAreaRep.UpdateAsync(wmsArea,ignoreNullValues:true); } /// /// 获取库区信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWmsAreaInput input) { return (await _wmsAreaRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取库区信息列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] WmsAreaInput input) { return await _wmsAreaRep.DetachedEntities.ProjectToType().ToListAsync(); } } }