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
|
{
|
/// <summary>
|
/// 设备刀具实时监控信息服务
|
/// </summary>
|
[ApiDescriptionSettings("刀具相关", Name = "KnifeToolEquipmentMonitor", Order = 102)]
|
[Route("api/[Controller]")]
|
public class KnifeToolEquipmentMonitorService : IKnifeToolEquipmentMonitorService, IDynamicApiController, ITransient
|
{
|
private readonly IRepository<KnifeToolEquipmentMonitor,MasterDbContextLocator> _knifeToolEquipmentMonitorRep;
|
private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
|
private readonly IRepository<KnifeToolEquipmentInfo, MasterDbContextLocator> _knifeToolEquipmentInfoRep;
|
|
|
public KnifeToolEquipmentMonitorService(
|
IRepository<KnifeToolEquipmentMonitor,MasterDbContextLocator> knifeToolEquipmentMonitorRep,
|
IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
|
IRepository<KnifeToolEquipmentInfo, MasterDbContextLocator> knifeToolEquipmentInfoRep
|
)
|
{
|
_knifeToolEquipmentMonitorRep = knifeToolEquipmentMonitorRep;
|
_equipmentBaseInfoRep = equipmentBaseInfoRep;
|
_knifeToolEquipmentInfoRep = knifeToolEquipmentInfoRep;
|
}
|
|
/// <summary>
|
/// 分页查询设备刀具实时监控信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("page")]
|
public async Task<PageResult<KnifeToolEquipmentMonitorOutput>> Page([FromQuery] KnifeToolEquipmentMonitorSearch input)
|
{
|
var knifeToolEquipmentMonitors = await (from knife in _knifeToolEquipmentMonitorRep.DetachedEntities
|
join eqbaseinfo in _equipmentBaseInfoRep.DetachedEntities on knife.EquipmentID equals eqbaseinfo.EquipmentId into eqjoinEmpty
|
from eqbaseinfo2 in eqjoinEmpty.DefaultIfEmpty()
|
join info in _knifeToolEquipmentInfoRep.DetachedEntities on knife.EquipmentID equals info.EquipmentID into infoempty
|
from infoempty2 in infoempty.DefaultIfEmpty()
|
where knife.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID)? knife.EquipmentID: input.EquipmentID)
|
where knife.WorkingProcedure == (string.IsNullOrEmpty(input.WorkingProcedure) ? knife.WorkingProcedure : input.WorkingProcedure)
|
where infoempty2.KnifeToolID == (string.IsNullOrEmpty(input.KnifeToolID) ? infoempty2.KnifeToolID : input.KnifeToolID)
|
select new KnifeToolEquipmentMonitorOutput
|
{
|
EquipmentID= knife.EquipmentID,
|
EquipmentName= eqbaseinfo2.EquipmentName,
|
WorkingProcedure = knife.WorkingProcedure,
|
Remarks1 = knife.Remarks1,
|
Remarks2 = knife.Remarks2,
|
Remarks3 = knife.Remarks3,
|
Id = knife.Id,
|
}).Distinct()
|
.OrderBy(PageInputOrder.OrderBuilder<KnifeToolEquipmentMonitorSearch>(input))
|
.ProjectToType<KnifeToolEquipmentMonitorOutput>()
|
.ToADPagedListAsync(input.PageNo, input.PageSize);
|
return knifeToolEquipmentMonitors;
|
|
}
|
|
/// <summary>
|
/// 增加设备刀具实时监控信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("add")]
|
public async Task Add(AddKnifeToolEquipmentMonitorInput input)
|
{
|
var isExist = await _knifeToolEquipmentMonitorRep.AnyAsync(u => u.EquipmentID == input.EquipmentID&&u.WorkingProcedure==input.WorkingProcedure, false);
|
if (isExist) throw Oops.Oh($"设备[{input.EquipmentID}]工序[{input.WorkingProcedure}]在系统中已存在,不允许重复添加!");
|
var knifeToolEquipmentMonitor = input.Adapt<KnifeToolEquipmentMonitor>();
|
await _knifeToolEquipmentMonitorRep.InsertAsync(knifeToolEquipmentMonitor);
|
}
|
|
/// <summary>
|
/// 删除设备刀具实时监控信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("delete")]
|
public async Task Delete(DeleteKnifeToolEquipmentMonitorInput input)
|
{
|
var knifeToolEquipmentMonitor = await _knifeToolEquipmentMonitorRep.FirstOrDefaultAsync(u => u.Id == input.Id);
|
await _knifeToolEquipmentMonitorRep.DeleteAsync(knifeToolEquipmentMonitor);
|
}
|
|
/// <summary>
|
/// 更新设备刀具实时监控信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("edit")]
|
public async Task Update(UpdateKnifeToolEquipmentMonitorInput input)
|
{
|
var isExist = await _knifeToolEquipmentMonitorRep.AnyAsync(u => u.Id == input.Id, false);
|
if (!isExist) throw Oops.Oh(ErrorCode.D3000);
|
|
var knifeToolEquipmentMonitor = input.Adapt<KnifeToolEquipmentMonitor>();
|
await _knifeToolEquipmentMonitorRep.UpdateAsync(knifeToolEquipmentMonitor,ignoreNullValues:true);
|
}
|
|
/// <summary>
|
/// 获取设备刀具实时监控信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("detail")]
|
public async Task<KnifeToolEquipmentMonitorOutput> Get([FromQuery] QueryeKnifeToolEquipmentMonitorInput input)
|
{
|
return (await _knifeToolEquipmentMonitorRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<KnifeToolEquipmentMonitorOutput>();
|
}
|
|
/// <summary>
|
/// 获取设备刀具实时监控信息列表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("list")]
|
public async Task<List<KnifeToolEquipmentMonitorOutput>> List([FromQuery] KnifeToolEquipmentMonitorInput input)
|
{
|
return await _knifeToolEquipmentMonitorRep.DetachedEntities.ProjectToType<KnifeToolEquipmentMonitorOutput>().ToListAsync();
|
}
|
|
}
|
}
|