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();
}
}
}