using DOAN.Model.MES.product;
using DOAN.Model.MES.product.Dto;
using DOAN.Repository;
using DOAN.Service.MES.product.IService;
using Infrastructure.Attribute;
using Infrastructure.Converter;
using Infrastructure.Extensions;
namespace DOAN.Service.MES.product
{
///
/// 工单查询服务
///
[AppService(ServiceType = typeof(IProWorkorderQueryService), ServiceLifetime = LifeTime.Transient)]
public class ProWorkorderQueryService : BaseService, IProWorkorderQueryService
{
///
/// 查询生产工单列表
///
///
///
public PagedInfo GetList(ProWorkorderQueryDto parm)
{
if (parm.WorkorderDate != null && parm.WorkorderDate.Length > 0)
{
parm.WorkorderDate[0] = DOANConvertDate.ConvertLocalDate(parm.WorkorderDate[0]);
parm.WorkorderDate[1] = DOANConvertDate.ConvertLocalDate(parm.WorkorderDate[1]);
parm.WorkorderDate[0] = parm.WorkorderDate[0].Date;
parm.WorkorderDate[1] = parm.WorkorderDate[1].Date;
}
var predicate = Expressionable
.Create()
.And(it => it.PlanNum > 0)
.AndIF(
!string.IsNullOrEmpty(parm.productionName),
it => it.productionName.Contains(parm.productionName)
)
.AndIF(
!string.IsNullOrEmpty(parm.productionCode),
it => it.productionCode.Contains(parm.productionCode)
)
.AndIF(
!string.IsNullOrEmpty(parm.FeedOrder),
it => it.FeedOrder.Contains(parm.FeedOrder)
)
.AndIF(
!string.IsNullOrEmpty(parm.CustomerOrder),
it => it.CustomerOrder.Contains(parm.CustomerOrder)
)
.AndIF(!string.IsNullOrEmpty(parm.RouteCode), it => it.RouteCode == parm.RouteCode)
.AndIF(!string.IsNullOrEmpty(parm.GroupCode), it => it.GroupCode == parm.GroupCode)
.AndIF(
parm.WorkorderDate != null && parm.WorkorderDate.Length > 0,
it => it.WorkorderDate >= parm.WorkorderDate[0] && it.WorkorderDate <= parm.WorkorderDate[1]
)
.ToExpression();
var response = Context
.Queryable()
.Where(predicate)
.OrderBy(it => it.Sort)
.ToPage(parm);
return response;
}
///
/// 获取工单无校验
///
///
///
public PagedInfo GetList_NOCheck(ProWorkorderQueryDto parm)
{
if (parm.WorkorderDate != null && parm.WorkorderDate.Length > 0)
{
parm.WorkorderDate[0] = DOANConvertDate.ConvertLocalDate(parm.WorkorderDate[0]);
parm.WorkorderDate[1] = DOANConvertDate.ConvertLocalDate(parm.WorkorderDate[1]);
parm.WorkorderDate[0] = parm.WorkorderDate[0].Date;
parm.WorkorderDate[1] = parm.WorkorderDate[1].Date;
}
var predicate = Expressionable
.Create()
.AndIF(
!string.IsNullOrEmpty(parm.productionName),
it => it.productionName.Contains(parm.productionName)
)
.AndIF(
!string.IsNullOrEmpty(parm.productionCode),
it => it.productionCode.Contains(parm.productionCode)
)
.AndIF(
!string.IsNullOrEmpty(parm.FeedOrder),
it => it.FeedOrder.Contains(parm.FeedOrder)
)
.AndIF(
!string.IsNullOrEmpty(parm.CustomerOrder),
it => it.CustomerOrder.Contains(parm.CustomerOrder)
)
.AndIF(!string.IsNullOrEmpty(parm.RouteCode), it => it.RouteCode == parm.RouteCode)
.AndIF(!string.IsNullOrEmpty(parm.GroupCode), it => it.GroupCode == parm.GroupCode)
.AndIF(
parm.WorkorderDate != null && parm.WorkorderDate.Length > 0,
it => it.WorkorderDate >= parm.WorkorderDate[0] && it.WorkorderDate <= parm.WorkorderDate[1]
)
.ToExpression();
var response = Context
.Queryable()
.Where(predicate)
.OrderBy(it => it.Sort)
.ToPage(parm);
return response;
}
///
/// 获取详情
///
///
///
public ProWorkorder GetInfo(string Id)
{
var response = Queryable().Where(x => x.Id == Id).First();
return response;
}
///
/// 获取工单进度跟踪列表
///
///
///
public PagedInfo GetWorkorderTraceProgressList(ProWorkorderQueryDto query)
{
// 这里需要实现工单进度跟踪列表的查询逻辑
// 暂时返回空列表
return new PagedInfo();
}
///
/// 查询BOM 及其所需数量
///
///
///
public List SearchBOMNum(string workorder_num)
{
// 这里需要实现BOM查询逻辑
// 暂时返回空列表
return new List();
}
}
}