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 = "WmsContainerType", Order = 100)] [Route("api/[Controller]")] public class WmsContainerTypeService : IDynamicApiController, ITransient { private readonly IRepository _wmsContainerTypeRep; public WmsContainerTypeService( IRepository wmsContainerTypeRep ) { _wmsContainerTypeRep = wmsContainerTypeRep; } /// /// 分页查询端拾器小车类型信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] WmsContainerTypeSearch input) { var wmsContainerTypes = await _wmsContainerTypeRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.WareContainerTypeCode), u => u.WareContainerTypeCode == input.WareContainerTypeCode) .Where(!string.IsNullOrEmpty(input.WareContainerTypeName), u => u.WareContainerTypeName == input.WareContainerTypeName) .Where(!string.IsNullOrEmpty(input.LocationType), u => u.LocationType == input.LocationType) .Where(input.Status != null, u => u.Status == input.Status) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return wmsContainerTypes; } /// /// 增加端拾器小车类型信息 /// /// /// [HttpPost("add")] public async Task Add(AddWmsContainerTypeInput input) { //string str = ""; //for (int i = 0; i < input.LocationType.Count; i++) //{ // str = str + input.LocationType[i] + ","; //} //WmsContainerType wmsContainerType = new WmsContainerType() //{ // WareContainerTypeCode = input.WareContainerTypeCode, // WareContainerTypeName = input.WareContainerTypeName, // Length = input.Length, // LocationType = str.Trim(','), // Height = input.Height, // Width = input.Width, // Status = input.Status //}; var isExist = await _wmsContainerTypeRep.AnyAsync(n => n.WareContainerTypeCode == input.WareContainerTypeCode); if (isExist) throw Oops.Oh("存在的相同的类型编码!"); var wmsContainerType = input.Adapt(); await _wmsContainerTypeRep.InsertAsync(wmsContainerType); } /// /// 删除端拾器小车类型信息 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteWmsContainerTypeInput input) { var wmsContainerType = await _wmsContainerTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wmsContainerTypeRep.DeleteAsync(wmsContainerType); } /// /// 更新端拾器小车类型信息 /// /// /// [HttpPost("edit")] public async Task Update([FromBody] UpdateWmsContainerTypeInput input) { var isExist = await _wmsContainerTypeRep.AnyAsync(n => n.WareContainerTypeCode == input.WareContainerTypeCode && n.Id != input.Id); if (isExist) throw Oops.Oh("存在的相同的类型编码!"); //var isExist = await _wmsContainerTypeRep.AnyAsync(u => u.Id == input.Id, false); //if (!isExist) throw Oops.Oh(ErrorCode.D3000); //string str = ""; //for (int i = 0; i < input.LocationType.Count; i++) //{ // str = str + input.LocationType[i] + ","; //} //WmsContainerType wmsContainerType = new WmsContainerType() //{ // WareContainerTypeCode = input.WareContainerTypeCode, // WareContainerTypeName = input.WareContainerTypeName, // Length = input.Length, // LocationType = str.Trim(','), // Height = input.Height, // Width = input.Width, // Status = input.Status //}; var wmsContainerType = input.Adapt(); await _wmsContainerTypeRep.UpdateAsync(wmsContainerType, ignoreNullValues: true); } /// /// 获取端拾器小车类型信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWmsContainerTypeInput input) { return (await _wmsContainerTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } ///// ///// 获取端拾器小车类型信息列表 ///// ///// ///// //[HttpGet("list")] //public async Task> List([FromQuery] WmsContainerTypeInput input) //{ // return await _wmsContainerTypeRep.DetachedEntities.ProjectToType().ToListAsync(); //} /// /// 获取容器类型列表 /// /// [HttpGet("fkWmsContainerType")] public async Task FkWmsMaterialList() { var list = await _wmsContainerTypeRep.DetachedEntities.ToListAsync(); return list.Select(e => new { Code = e.WareContainerTypeCode, Name = e.WareContainerTypeName }); } } }