126 lines
5.1 KiB
C#
126 lines
5.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using DOAN.Model.MES.order;
|
|
using DOAN.Model.MES.order.Dto;
|
|
using DOAN.Model.MES.Order.Dto;
|
|
using DOAN.Model.MES.product;
|
|
using DOAN.Service.MES.order.IService;
|
|
using DOAN.Service.MES.Order.IService;
|
|
using Infrastructure.Attribute;
|
|
using Infrastructure.Converter;
|
|
|
|
namespace DOAN.Service.MES.Order
|
|
{
|
|
[AppService(
|
|
ServiceType = typeof(IDeliveryScheduleService),
|
|
ServiceLifetime = LifeTime.Transient
|
|
)]
|
|
public class DeliveryScheduleService : BaseService<OrderPurchase>, IDeliveryScheduleService
|
|
{
|
|
/// <summary>
|
|
/// 获取交付进度
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
public List<OrderScheduleDto> GetList(OrderPurchaseQueryDto parm)
|
|
{
|
|
// 日期处理
|
|
if (parm != null && parm.ImportDate != null && parm.ImportDate.Length > 0)
|
|
{
|
|
if (parm.ImportDate[0] > DateTime.MinValue)
|
|
{
|
|
parm.ImportDate[0] = DOANConvertDate.ConvertLocalDate(parm.ImportDate[0]);
|
|
}
|
|
if (parm.ImportDate[1] > DateTime.MinValue)
|
|
{
|
|
parm.ImportDate[1] = DOANConvertDate.ConvertLocalDate(parm.ImportDate[1]);
|
|
}
|
|
}
|
|
var predicate = QueryExp(parm);
|
|
var queryResult = Context
|
|
.Queryable<OrderPurchase>()
|
|
.LeftJoin<ProWorkorder>((o, w) => o.OrderNoMes == w.CustomerOrder)
|
|
.Where(predicate.ToExpression())
|
|
.Where((o, w) => !SqlFunc.IsNullOrEmpty(o.OrderNoMes))
|
|
.OrderBy((o, w) => o.OrderNoMes)
|
|
.Select(
|
|
(o, w) =>
|
|
new OrderScheduleDto
|
|
{
|
|
Id = o.Id,
|
|
ImportDate = o.ImportDate,
|
|
OrderNoMes = o.OrderNoMes,
|
|
PurchaseOrderErp = o.PurchaseOrderErp,
|
|
Poitem = o.Poitem,
|
|
Variety = o.Variety,
|
|
Specordindicator = o.Specordindicator,
|
|
KdType = o.KdType,
|
|
DocumentDate = o.DocumentDate,
|
|
Seller = o.Seller,
|
|
SalesArea = o.SalesArea,
|
|
MaterialName = o.MaterialName,
|
|
MaterialCode = o.MaterialCode,
|
|
DemandQuantity = o.DemandQuantity,
|
|
DeliveryQuantity = o.DeliveryQuantity,
|
|
DeliveryDate = o.DeliveryDate,
|
|
//DeliveryQuantity = SqlFunc.Subqueryable<ProWorkorder>()
|
|
//.Where(w => w.FeedOrder == o.OrderNoMes).Sum(it=>it.ShipmentNum),
|
|
|
|
StartDate = o.StartDate,
|
|
EndDate = o.EndDate,
|
|
Orderindicator = o.Orderindicator,
|
|
RouteCode = o.RouteCode,
|
|
Status = o.Status,
|
|
Remark = o.Remark,
|
|
CreatedBy = o.CreatedBy,
|
|
CreatedTime = o.CreatedTime,
|
|
UpdatedBy = o.UpdatedBy,
|
|
UpdatedTime = o.UpdatedTime,
|
|
Children = SqlFunc
|
|
.Subqueryable<ProWorkorder>()
|
|
.Where(w => w.CustomerOrder == o.OrderNoMes) // 子查询,获取对应的工单数据
|
|
.ToList(),
|
|
}
|
|
)
|
|
.Distinct()
|
|
.ToList();
|
|
|
|
return queryResult;
|
|
}
|
|
|
|
private static Expressionable<OrderPurchase, ProWorkorder> QueryExp(
|
|
OrderPurchaseQueryDto parm
|
|
)
|
|
{
|
|
var predicate = Expressionable
|
|
.Create<OrderPurchase, ProWorkorder>()
|
|
.AndIF(
|
|
!string.IsNullOrEmpty(parm.OrderNoMes),
|
|
(o, w) => o.OrderNoMes.Contains(parm.OrderNoMes)
|
|
)
|
|
.AndIF(
|
|
!string.IsNullOrEmpty(parm.PurchaseOrderErp),
|
|
(o, w) => o.PurchaseOrderErp.Contains(parm.PurchaseOrderErp)
|
|
)
|
|
.AndIF(
|
|
!string.IsNullOrEmpty(parm.MaterialCode),
|
|
(o, w) => o.MaterialCode.Contains(parm.MaterialCode)
|
|
)
|
|
.AndIF(
|
|
parm.ImportDate != null && parm.ImportDate[0] > DateTime.MinValue,
|
|
(o, w) => o.ImportDate >= parm.ImportDate[0]
|
|
)
|
|
.AndIF(
|
|
parm.ImportDate != null && parm.ImportDate[1] > DateTime.MinValue,
|
|
(o, w) => o.ImportDate <= parm.ImportDate[1]
|
|
)
|
|
.AndIF(parm.Orderindicator > -2, (o, w) => o.Orderindicator == parm.Orderindicator);
|
|
|
|
return predicate;
|
|
}
|
|
}
|
|
}
|