2025-02-18 09:28:05 +08:00
|
|
|
|
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 System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = QueryExp(parm);
|
|
|
|
|
|
var queryResult = Context.Queryable<OrderPurchase>()
|
|
|
|
|
|
.LeftJoin<ProWorkorder>((o, w) => o.OrderNoMes == w.FeedOrder)
|
|
|
|
|
|
.Where(predicate.ToExpression())
|
|
|
|
|
|
.Where((o, w) => !SqlFunc.IsNullOrEmpty(o.OrderNoMes))
|
|
|
|
|
|
.OrderBy((o, w) => o.Id)
|
|
|
|
|
|
.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,
|
|
|
|
|
|
DeliveryDate = o.DeliveryDate,
|
2025-02-18 13:11:15 +08:00
|
|
|
|
DeliveryQuantity = SqlFunc.Subqueryable<ProWorkorder>()
|
|
|
|
|
|
.Where(w => w.FeedOrder == o.OrderNoMes).Sum(it=>it.ShipmentNum),
|
2025-02-18 09:28:05 +08:00
|
|
|
|
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.FeedOrder == 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.OrderNoMes.Contains(parm.PurchaseOrderErp))
|
|
|
|
|
|
.AndIF(parm.ImportDate != null && parm.ImportDate[0] > DateTime.MinValue, (o, w) => o.ImportDate >= parm.ImportDate[0])
|
2025-02-18 14:44:22 +08:00
|
|
|
|
.AndIF(parm.ImportDate != null && parm.ImportDate[1] > DateTime.MinValue, (o, w) => o.ImportDate <= parm.ImportDate[1])
|
2025-02-18 14:29:42 +08:00
|
|
|
|
.AndIF(parm.Orderindicator>-1,(o,w)=>o.Orderindicator==parm.Orderindicator)
|
2025-02-18 09:28:05 +08:00
|
|
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
return predicate;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|