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 = "WmsMaterial", Order = 100)] [Route("api/[Controller]")] public class WmsMaterialService : IWmsMaterialService, IDynamicApiController, ITransient { private readonly IRepository _wmsMaterialRep; public WmsMaterialService( IRepository wmsMaterialRep ) { _wmsMaterialRep = wmsMaterialRep; } /// /// 分页查询物料信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] WmsMaterialSearch input) { var wmsMaterials = await _wmsMaterialRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.MaterialName, $"%{input.Materialname.Trim()}%")) .Where(!string.IsNullOrEmpty(input.Materialno), u => EF.Functions.Like(u.MaterialNo, $"%{input.Materialno.Trim()}%")) .Where(!string.IsNullOrEmpty(input.Materialbatch), u => EF.Functions.Like(u.MaterialBatch, $"%{input.Materialbatch.Trim()}%")) .Where(input.Inspectionmethod != null, u => u.InspectionMethod == input.Inspectionmethod) .Where(input.Materialtype != null, u => u.MaterialType == input.Materialtype) .Where(!string.IsNullOrEmpty(input.Materialspec), u => u.MaterialSpec == input.Materialspec) .Where(input.Unittype != null, u => u.UnitType == input.Unittype) .Where(input.Unitno != null, u => u.UnitNo == input.Unitno) .Where(input.Keymaterials != null, u => u.Keymaterials == input.Keymaterials) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsMaterials; } /// /// 增加物料信息 /// /// /// [HttpPost("add")] public async Task Add(AddWmsMaterialInput input) { var isExit = await _wmsMaterialRep.AnyAsync(n => n.MaterialNo==input.Materialno); if (isExit) throw Oops.Oh("存在的相同的物料编号!"); var wmsMaterial = input.Adapt(); await _wmsMaterialRep.InsertAsync(wmsMaterial); } /// /// 删除物料信息 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteWmsMaterialInput input) { var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wmsMaterialRep.DeleteAsync(wmsMaterial); } /// /// 更新物料信息 /// /// /// [HttpPost("edit")] public async Task Update(UpdateWmsMaterialInput input) { var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var wmsMaterial = input.Adapt(); await _wmsMaterialRep.UpdateAsync(wmsMaterial,ignoreNullValues:false); } /// /// 获取物料信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWmsMaterialInput input) { return (await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取物料信息列表 /// /// /// [HttpGet("list")] public async Task List([FromQuery] WmsMaterialInput input) { //return await _wmsMaterialRep.DetachedEntities.ProjectToType().ToListAsync(); var list = await _wmsMaterialRep.DetachedEntities.ToListAsync(); return list.Select(e => new { Code = e.MaterialNo, Name = e.MaterialName }); } } }