feat: 添加工单管理服务及相关测试
refactor: 重构工单服务接口和实现 test: 添加工单服务的单元测试和集成测试
This commit is contained in:
156
DOAN.Service/MES/Product/ProWorkorderQueryService.cs
Normal file
156
DOAN.Service/MES/Product/ProWorkorderQueryService.cs
Normal file
@@ -0,0 +1,156 @@
|
||||
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
|
||||
{
|
||||
/// <summary>
|
||||
/// 工单查询服务
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IProWorkorderQueryService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class ProWorkorderQueryService : BaseService<ProWorkorder>, IProWorkorderQueryService
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询生产工单列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<ProWorkorderDto3> 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<ProWorkorder>()
|
||||
.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]
|
||||
)
|
||||
.And(it => it.PlanNum > 0)
|
||||
.ToExpression();
|
||||
|
||||
var response = Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(predicate)
|
||||
.OrderBy(it => it.Sort)
|
||||
.ToPage<ProWorkorder, ProWorkorderDto3>(parm);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取工单无校验
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<ProWorkorderDto> 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<ProWorkorder>()
|
||||
.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]
|
||||
)
|
||||
.And(it => it.PlanNum > 0)
|
||||
.ToExpression();
|
||||
|
||||
var response = Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(predicate)
|
||||
.OrderBy(it => it.Sort)
|
||||
.ToPage<ProWorkorder, ProWorkorderDto>(parm);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public ProWorkorder GetInfo(string Id)
|
||||
{
|
||||
var response = Queryable().Where(x => x.Id == Id).First();
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取工单进度跟踪列表
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<ProWorkorderTranceProgressDto> GetWorkorderTraceProgressList(ProWorkorderQueryDto query)
|
||||
{
|
||||
// 这里需要实现工单进度跟踪列表的查询逻辑
|
||||
// 暂时返回空列表
|
||||
return new PagedInfo<ProWorkorderTranceProgressDto>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询BOM 及其所需数量
|
||||
/// </summary>
|
||||
/// <param name="workorder_num"></param>
|
||||
/// <returns></returns>
|
||||
public List<WorkOrderBom> SearchBOMNum(string workorder_num)
|
||||
{
|
||||
// 这里需要实现BOM查询逻辑
|
||||
// 暂时返回空列表
|
||||
return new List<WorkOrderBom>();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user