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 = "ProductionPlanInfo", Order = 100)]
|
[Route("api/[Controller]")]
|
public class ProductionPlanInfoService : IProductionPlanInfoService, IDynamicApiController, ITransient
|
{
|
private readonly IRepository<ProductionPlanInfo,MasterDbContextLocator> _productionPlanInfoRep;
|
|
|
public ProductionPlanInfoService(
|
IRepository<ProductionPlanInfo,MasterDbContextLocator> productionPlanInfoRep
|
)
|
{
|
_productionPlanInfoRep = productionPlanInfoRep;
|
}
|
|
/// <summary>
|
/// 分页查询生产计划表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("page")]
|
public async Task<PageResult<ProductionPlanInfoOutput>> Page([FromQuery] ProductionPlanInfoSearch input)
|
{
|
var productionPlanInfos = await _productionPlanInfoRep.DetachedEntities
|
.Where(!string.IsNullOrEmpty(input.PlanType), u => u.PlanType == input.PlanType)
|
.Where(input.PlanTime != null, u => u.PlanTime == input.PlanTime)
|
.Where(!string.IsNullOrEmpty(input.TeamType), u => u.TeamType == input.TeamType)
|
.Where(input.PlanProductionNum != null, u => u.PlanProductionNum == input.PlanProductionNum)
|
.Where(!string.IsNullOrEmpty(input.Remarks), u => u.Remarks == input.Remarks)
|
.OrderByDescending(o=>o.PlanTime)
|
.ProjectToType<ProductionPlanInfoOutput>()
|
.ToADPagedListAsync(input.PageNo, input.PageSize);
|
return productionPlanInfos;
|
}
|
|
/// <summary>
|
/// 增加生产计划表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("add")]
|
public async Task Add(AddProductionPlanInfoInput input)
|
{
|
if (input==null)
|
{
|
throw Oops.Oh("传参不允许为空");
|
}
|
if (input.PlanType.Equals("1"))
|
{
|
var shiftInfo = await _productionPlanInfoRep.FirstOrDefaultAsync(x => x.PlanType == input.PlanType&&x.PlanTime.Date==input.PlanTime&&x.TeamType.Equals(input.TeamType) && x.IsDeleted == false);
|
|
if (shiftInfo != null)
|
{
|
throw Oops.Oh($"班次[{input.TeamType}]在[{input.PlanTime}]中已存在");
|
}
|
}else if (input.PlanType.Equals("2"))
|
{
|
var shiftInfo = await _productionPlanInfoRep.FirstOrDefaultAsync(x => x.PlanType == input.PlanType && x.PlanTime.Date == input.PlanTime && x.IsDeleted == false);
|
|
if (shiftInfo != null)
|
{
|
throw Oops.Oh($"[{input.PlanTime}]计划已存在");
|
}
|
|
}
|
else
|
{
|
throw Oops.Oh("参数计划类型传入不正确!");
|
}
|
|
var productionPlanInfo = input.Adapt<ProductionPlanInfo>();
|
await _productionPlanInfoRep.InsertAsync(productionPlanInfo);
|
}
|
|
/// <summary>
|
/// 删除生产计划表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("delete")]
|
public async Task Delete(DeleteProductionPlanInfoInput input)
|
{
|
var productionPlanInfo = await _productionPlanInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
|
await _productionPlanInfoRep.DeleteAsync(productionPlanInfo);
|
}
|
|
/// <summary>
|
/// 更新生产计划表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost("edit")]
|
public async Task Update(UpdateProductionPlanInfoInput input)
|
{
|
var isExist = await _productionPlanInfoRep.AnyAsync(u => u.Id == input.Id, false);
|
if (!isExist) throw Oops.Oh(ErrorCode.D3000);
|
|
var productionPlanInfo = input.Adapt<ProductionPlanInfo>();
|
await _productionPlanInfoRep.UpdateAsync(productionPlanInfo,ignoreNullValues:true);
|
}
|
|
/// <summary>
|
/// 获取生产计划表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("detail")]
|
public async Task<ProductionPlanInfoOutput> Get([FromQuery] QueryeProductionPlanInfoInput input)
|
{
|
return (await _productionPlanInfoRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<ProductionPlanInfoOutput>();
|
}
|
|
/// <summary>
|
/// 获取生产计划表列表
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("list")]
|
public async Task<List<ProductionPlanInfoOutput>> List([FromQuery] ProductionPlanInfoInput input)
|
{
|
return await _productionPlanInfoRep.DetachedEntities.ProjectToType<ProductionPlanInfoOutput>().ToListAsync();
|
}
|
|
}
|
}
|