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 Microsoft.EntityFrameworkCore.Internal; using System.Linq.Dynamic.Core; namespace iWare.Wms.Application { /// /// 刀具基本信息服务 /// [ApiDescriptionSettings("基础数据管理", Name = "KnifeToolBaseInfo", Order = 100)] [Route("api/[Controller]")] public class KnifeToolBaseInfoService : IKnifeToolBaseInfoService, IDynamicApiController, ITransient { private readonly IRepository _knifeToolBaseInfoRep; private readonly IRepository _equipmentBaseInfoRep; /// /// 刀具基本信息构造函数 /// /// /// public KnifeToolBaseInfoService( IRepository knifeToolBaseInfoRep, IRepository equipmentBaseInfoRep ) { _knifeToolBaseInfoRep = knifeToolBaseInfoRep; _equipmentBaseInfoRep = equipmentBaseInfoRep; } /// /// 分页查询刀具基本信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] KnifeToolBaseInfoSearch input) { //var knifeToolBaseInfos = await _knifeToolBaseInfoRep.DetachedEntities // .GroupJoin(_equipmentBaseInfoRep.DetachedEntities, a => a.EquipmentID, b => b.EquipmentId, (a, b) => new { a = a, b = b.DefaultIfEmpty().FirstOrDefault() }) // .Where(!string.IsNullOrEmpty(input.KnifeToolModel), u => u.KnifeToolModel.Contains(input.KnifeToolModel)) // .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.EquipmentID == input.EquipmentID) // .Select(s => new KnifeToolBaseInfoOutput // { // Id = s.Id, // KnifeToolID = s.KnifeToolID, // KnifeToolModel = s.KnifeToolModel, // KnifeEdgeNumber = s.KnifeEdgeNumber, // KnifeToolLife = s.KnifeToolLife, // KnifeLength = s.KnifeLength, // EquipmentID = s.EquipmentID, // //EquipmentName=s.b.EquipmentName, // CreatedTime = s.CreatedTime, // Remarks = s.Remarks, // }) // .OrderBy(PageInputOrder.OrderBuilder(input)) // .ProjectToType() // .ToADPagedListAsync(input.PageNo, input.PageSize; var knifeToolBaseInfos = await (from knife in _knifeToolBaseInfoRep.DetachedEntities join baseinfo in _equipmentBaseInfoRep.DetachedEntities on knife.EquipmentID equals baseinfo.EquipmentId into joinEmpty from baseinfo2 in joinEmpty.DefaultIfEmpty() where knife.KnifeToolModel == (input.KnifeToolModel?? knife.KnifeToolModel) where knife.EquipmentID == (input.EquipmentID?? knife.EquipmentID) select new KnifeToolBaseInfoOutput { Id = knife.Id, KnifeToolID = knife.KnifeToolID, KnifeToolModel = knife.KnifeToolModel, KnifeEdgeNumber = knife.KnifeEdgeNumber, KnifeToolLife = knife.KnifeToolLife, KnifeLength = knife.KnifeLength, EquipmentID = knife.EquipmentID, EquipmentName= baseinfo2.EquipmentName, KnifeToolChangeAlertThreshold= knife.KnifeToolChangeAlertThreshold, CreatedTime = knife.CreatedTime, Remarks = knife.Remarks, }) .ProjectToType() .OrderBy(PageInputOrder.OrderBuilder(input)) .ToADPagedListAsync(input.PageNo, input.PageSize); return knifeToolBaseInfos; } /// /// 增加刀具基本信息 /// /// /// [HttpPost("add")] public async Task Add(AddKnifeToolBaseInfoInput input) { var isExist = await _knifeToolBaseInfoRep.AnyAsync(u => u.KnifeToolID == input.KnifeToolID, false); if (isExist) throw Oops.Oh($"当前刀具编号已存在,新增失败!"); var knifeToolBaseInfo = input.Adapt(); await _knifeToolBaseInfoRep.InsertAsync(knifeToolBaseInfo); } /// /// 删除刀具基本信息 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteKnifeToolBaseInfoInput input) { var knifeToolBaseInfo = await _knifeToolBaseInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id); knifeToolBaseInfo.IsDeleted = true; //await _knifeToolBaseInfoRep.DeleteAsync(knifeToolBaseInfo); } /// /// 批量删除刀具基础信息 /// /// /// [HttpPost("selectDelete")] public async Task SelectDelete(List input) { foreach (var item in input) { var knifeToolBaseInfo = await _knifeToolBaseInfoRep.FirstOrDefaultAsync(u => u.Id == item.Id); knifeToolBaseInfo.IsDeleted = true; //await _knifeToolBaseInfoRep.DeleteAsync(knifeToolBaseInfo); } } /// /// 更新刀具基本信息 /// /// /// [HttpPost("edit")] public async Task Update(UpdateKnifeToolBaseInfoInput input) { var isExist = await _knifeToolBaseInfoRep.AnyAsync(u => u.Id == input.Id && u.KnifeToolID == input.KnifeToolID, false); if (!isExist) throw Oops.Oh($"刀具编号不能进行变更,修改失败!"); var knifeToolBaseInfo = input.Adapt(); await _knifeToolBaseInfoRep.UpdateAsync(knifeToolBaseInfo,ignoreNullValues:true); } /// /// 获取刀具基本信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeKnifeToolBaseInfoInput input) { return (await _knifeToolBaseInfoRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取刀具基本信息列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] KnifeToolBaseInfoInput input) { return await _knifeToolBaseInfoRep.DetachedEntities.ProjectToType().ToListAsync(); } } }