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; using System.Linq.Dynamic.Core; namespace iWare.Wms.Application { /// /// 设备刀具操作日志表服务 /// [ApiDescriptionSettings("刀具相关", Name = "KnifeToolEquipmentUpdateLog", Order = 103)] [Route("api/[Controller]")] public class KnifeToolEquipmentUpdateLogService : IKnifeToolEquipmentUpdateLogService, IDynamicApiController, ITransient { private readonly IRepository _knifeToolEquipmentUpdateLogRep; private readonly IRepository _knifeToolBaseInfoRep; public KnifeToolEquipmentUpdateLogService( IRepository knifeToolEquipmentUpdateLogRep , IRepository knifeToolBaseInfoRep) { _knifeToolEquipmentUpdateLogRep = knifeToolEquipmentUpdateLogRep; _knifeToolBaseInfoRep = knifeToolBaseInfoRep; } /// /// 分页查询设备刀具操作日志表 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] KnifeToolEquipmentUpdateLogSearch input) { var knifeToolEquipmentUpdateLogs = await (from log in _knifeToolEquipmentUpdateLogRep.DetachedEntities join baseinfo in _knifeToolBaseInfoRep.DetachedEntities on log.KnifeToolID equals baseinfo.KnifeToolID into baseinfo2 from baseinfo3 in baseinfo2.DefaultIfEmpty() select new KnifeToolEquipmentUpdateLogOutput { EquipmentID = log.EquipmentID, WorkingProcedure = log.WorkingProcedure, Station = log.Station, KnifeToolID = log.KnifeToolID, KnifeToolName = log.KnifeToolName, KnifeToolLife = (baseinfo3 == null ? 0 : baseinfo3.KnifeToolLife), KnifeToolChangeAlertThreshold= (baseinfo3 == null ? 0 : baseinfo3.KnifeToolChangeAlertThreshold), StartLife = log.StartLife.Value, CurrentLife = log.CurrentLife.Value, ResidueLife = log.ResidueLife.Value, ChangeStartTime = log.ChangeStartTime, ChangeEndTime = log.ChangeEndTime, OperateDesc = log.OperateDesc, OperateType = log.OperateType, Remarks1 = log.Remarks1, Remarks2 = log.Remarks2, Remarks3 = log.Remarks3, Id = log.Id }) .ProjectToType() .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.EquipmentID == input.EquipmentID) .ToADPagedListAsync(input.PageNo, input.PageSize); //var knifeToolEquipmentUpdateLogs = await _knifeToolEquipmentUpdateLogRep.DetachedEntities // .GroupJoin(_knifeToolBaseInfoRep.DetachedEntities, a => a.KnifeToolID, b => b.KnifeToolID, (a, b) => new { a,b}) // .SelectMany(ab => ab.b.DefaultIfEmpty(), (ab, b) => new { ab.a, b.KnifeToolLife }) // .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.a.EquipmentID == input.EquipmentID) // //.Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => u.WorkingProcedure == input.WorkingProcedure) // //.Where(!string.IsNullOrEmpty(input.Station), u => u.Station == input.Station) // .Where(!string.IsNullOrEmpty(input.KnifeToolID), u => u.a.KnifeToolID == input.KnifeToolID) // .Where(!string.IsNullOrEmpty(input.OperateType), u => u.a.OperateType == input.OperateType) // .Where(!string.IsNullOrEmpty(input.KnifeToolName), u => u.a.KnifeToolName == input.KnifeToolName) // ////.Where(input.StartLife != null, u => u.StartLife == input.StartLife) // ////.Where(input.CurrentLife != null, u => u.CurrentLife == input.CurrentLife) // ////.Where(input.ResidueLife, u => u.ResidueLife == input.ResidueLife) // .Where(input.ChangeStartTimeStart != null, u => u.a.ChangeStartTime >= input.ChangeStartTimeStart) // .Where(input.ChangeStartTimeEnd != null, u => u.a.ChangeStartTime < input.ChangeStartTimeEnd.Value.AddDays(1))//用日期查询 // //.Where(input.ChangeEndTime != null, u => u.ChangeEndTime == input.ChangeEndTime) // //.Where(!string.IsNullOrEmpty(input.OperateDesc), u => u.OperateDesc == input.OperateDesc) // //.Where(!string.IsNullOrEmpty(input.OperateType), u => u.OperateType == input.OperateType) // //.Where(!string.IsNullOrEmpty(input.Remarks1), u => u.Remarks1 == input.Remarks1) // //.Where(!string.IsNullOrEmpty(input.Remarks2), u => u.Remarks2 == input.Remarks2) // //.Where(!string.IsNullOrEmpty(input.Remarks3), u => u.Remarks3 == input.Remarks3) // .OrderBy(PageInputOrder.OrderBuilder(input)) // //.ProjectToType() // .ToADPagedListAsync(input.PageNo, input.PageSize); ////return knifeToolEquipmentUpdateLogs; return knifeToolEquipmentUpdateLogs; } /// /// 增加设备刀具操作日志表 /// /// /// [HttpPost("add")] public async Task Add(AddKnifeToolEquipmentUpdateLogInput input) { var knifeToolEquipmentUpdateLog = input.Adapt(); await _knifeToolEquipmentUpdateLogRep.InsertAsync(knifeToolEquipmentUpdateLog); } /// /// 删除设备刀具操作日志表 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteKnifeToolEquipmentUpdateLogInput input) { var knifeToolEquipmentUpdateLog = await _knifeToolEquipmentUpdateLogRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _knifeToolEquipmentUpdateLogRep.DeleteAsync(knifeToolEquipmentUpdateLog); } /// /// 更新设备刀具操作日志表 /// /// /// [HttpPost("edit")] public async Task Update(UpdateKnifeToolEquipmentUpdateLogInput input) { var isExist = await _knifeToolEquipmentUpdateLogRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var knifeToolEquipmentUpdateLog = input.Adapt(); await _knifeToolEquipmentUpdateLogRep.UpdateAsync(knifeToolEquipmentUpdateLog,ignoreNullValues:true); } /// /// 获取设备刀具操作日志表 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeKnifeToolEquipmentUpdateLogInput input) { return (await _knifeToolEquipmentUpdateLogRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取设备刀具操作日志表列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] KnifeToolEquipmentUpdateLogInput input) { return await _knifeToolEquipmentUpdateLogRep.DetachedEntities.ProjectToType().ToListAsync(); } } }