Files
kunshan-bzfm-mes-backend/DOAN.Service/MES/Order/DeliveryScheduleService.cs

94 lines
3.7 KiB
C#
Raw Normal View History

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])
.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;
}
}
}