using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; using Admin.NET.Core; namespace Admin.NET.Application { /// /// 物料信息服务 /// [ApiDescriptionSettings("自己的业务", Name = "WmsMaterial", Order = 100)] [Route("api/[Controller]")] public class WmsMaterialService : IDynamicApiController, ITransient { private readonly IRepository _wmsMaterialRep; private readonly IRepository _wmsAreaRep; private readonly IRepository _lesStationRep; /// /// 构造函数 /// public WmsMaterialService( IRepository wmsMaterialRep, IRepository wmsAreaRep, IRepository lesStationRep ) { _wmsMaterialRep = wmsMaterialRep; _wmsAreaRep = wmsAreaRep; _lesStationRep = lesStationRep; } /// /// 分页查询物料信息 /// /// /// [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(input.MaterialType != null, u => u.MaterialType == input.MaterialType) .Where(!string.IsNullOrEmpty(input.MaterialSpec), u => EF.Functions.Like(u.MaterialSpec, $"%{input.MaterialSpec.Trim()}%")) .Where(!string.IsNullOrEmpty(input.MaterialDensity), u => EF.Functions.Like(u.MaterialDensity, $"%{input.MaterialDensity.Trim()}%")) //.Where(input.IsMaturation != null, u => u.IsMaturation == input.IsMaturation) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsMaterials; } /// /// 增加物料信息 /// /// /// [HttpPost("add")] public async Task Add(AddWmsMaterialInput input) { 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: true); } /// /// 获取物料信息 /// /// /// [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(); } /// /// 库区下拉框 /// /// [HttpGet("GetAreaList")] public async Task> GetAreaList() { var data = await _wmsAreaRep.DetachedEntities.ProjectToType().ToListAsync(); List areaListOutputLists = new List(); foreach (var item in data) { AreaListOutput areaListOutputList = new AreaListOutput(); areaListOutputList.AreaId = item.Id.ToString(); areaListOutputList.AreaName = item.AreaName; areaListOutputLists.Add(areaListOutputList); } return areaListOutputLists; } /// /// 工作区(工位)下拉框 /// /// //[HttpGet("GetStationList")] //public async Task> GetStationList() //{ // var data = await _lesStationRep.DetachedEntities.ProjectToType().ToListAsync(); // List stationListOutputLists = new List(); // foreach (var item in data) // { // StationListOutput stationListOutputList = new StationListOutput(); // stationListOutputList.StationId = item.Id.ToString(); // stationListOutputList.StationName = item.Name; // stationListOutputLists.Add(stationListOutputList); // } // return stationListOutputLists; //} } }