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
|
{
|
/// <summary>
|
/// 刀具基本信息服务
|
/// </summary>
|
[ApiDescriptionSettings("基础数据管理", Name = "KnifeToolBaseInfo", Order = 100)]
|
[Route("api/[Controller]")]
|
public class KnifeToolBaseInfoService : IKnifeToolBaseInfoService, IDynamicApiController, ITransient
|
{
|
private readonly IRepository<KnifeToolBaseInfo,MasterDbContextLocator> _knifeToolBaseInfoRep;
|
private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
|
|
/// <summary>
|
/// 刀具基本信息构造函数
|
/// </summary>
|
/// <param name="knifeToolBaseInfoRep"></param>
|
/// <param name="equipmentBaseInfoRep"></param>
|
public KnifeToolBaseInfoService(
|
IRepository<KnifeToolBaseInfo,MasterDbContextLocator> knifeToolBaseInfoRep,
|
IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep
|
)
|
{
|
_knifeToolBaseInfoRep = knifeToolBaseInfoRep;
|
_equipmentBaseInfoRep = equipmentBaseInfoRep;
|
}
|
|
/// <summary>
|
/// 分页查询刀具基本信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("page")]
|
public async Task<PageResult<KnifeToolBaseInfoOutput>> 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<KnifeToolBaseInfoSearch>(input))
|
// .ProjectToType<KnifeToolBaseInfoOutput>()
|
// .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<KnifeToolBaseInfoOutput>()
|
.OrderBy(PageInputOrder.OrderBuilder<KnifeToolBaseInfoSearch>(input))
|
.ToADPagedListAsync(input.PageNo, input.PageSize);
|
|
return knifeToolBaseInfos;
|
}
|
|
/// <summary>
|
/// 增加刀具基本信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[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<KnifeToolBaseInfo>();
|
await _knifeToolBaseInfoRep.InsertAsync(knifeToolBaseInfo);
|
}
|
|
/// <summary>
|
/// 删除刀具基本信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[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);
|
}
|
|
/// <summary>
|
/// 批量删除刀具基础信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("selectDelete")]
|
public async Task SelectDelete(List<KnifeToolBaseInfoInput> input)
|
{
|
foreach (var item in input)
|
{
|
var knifeToolBaseInfo = await _knifeToolBaseInfoRep.FirstOrDefaultAsync(u => u.Id == item.Id);
|
knifeToolBaseInfo.IsDeleted = true;
|
//await _knifeToolBaseInfoRep.DeleteAsync(knifeToolBaseInfo);
|
}
|
}
|
|
/// <summary>
|
/// 更新刀具基本信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[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<KnifeToolBaseInfo>();
|
await _knifeToolBaseInfoRep.UpdateAsync(knifeToolBaseInfo,ignoreNullValues:true);
|
}
|
|
/// <summary>
|
/// 获取刀具基本信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("detail")]
|
public async Task<KnifeToolBaseInfoOutput> Get([FromQuery] QueryeKnifeToolBaseInfoInput input)
|
{
|
return (await _knifeToolBaseInfoRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<KnifeToolBaseInfoOutput>();
|
}
|
|
/// <summary>
|
/// 获取刀具基本信息列表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("list")]
|
public async Task<List<KnifeToolBaseInfoOutput>> List([FromQuery] KnifeToolBaseInfoInput input)
|
{
|
return await _knifeToolBaseInfoRep.DetachedEntities.ProjectToType<KnifeToolBaseInfoOutput>().ToListAsync();
|
}
|
|
}
|
}
|