diff --git a/DOAN.Model/MES/SmartScreen/Order/Dto/OrderProgressDto.cs b/DOAN.Model/MES/SmartScreen/Order/Dto/OrderProgressDto.cs
index 6f90778..91ab8c2 100644
--- a/DOAN.Model/MES/SmartScreen/Order/Dto/OrderProgressDto.cs
+++ b/DOAN.Model/MES/SmartScreen/Order/Dto/OrderProgressDto.cs
@@ -11,7 +11,7 @@ namespace DOAN.Model.MES.SmartScreen.Order.Dto
///
/// 订单号
///
- public string OrderNo { get; set; }
+ public string OrderNoMes { get; set; }
///
/// 物料名称
@@ -36,10 +36,9 @@ namespace DOAN.Model.MES.SmartScreen.Order.Dto
public class ProductionProcesses
{
- public string OrderNo { get; set; }
+ public int? Id { get; set; }
+
public string ProcessName { get; set; }
-
-
public int? Num { get; set; }
}
diff --git a/DOAN.Service/MES/SmartScreen/Order/OrderSmartService.cs b/DOAN.Service/MES/SmartScreen/Order/OrderSmartService.cs
index b50e534..746dff5 100644
--- a/DOAN.Service/MES/SmartScreen/Order/OrderSmartService.cs
+++ b/DOAN.Service/MES/SmartScreen/Order/OrderSmartService.cs
@@ -16,10 +16,10 @@ using DOAN.Model.MES.base_;
namespace DOAN.Service.MES.SmartScreen.Order
{
- ///
- /// 采购订单Service业务层处理
- ///
- [AppService(ServiceType = typeof(IOrderSmartService), ServiceLifetime = LifeTime.Transient)]
+ ///
+ /// 采购订单Service业务层处理
+ ///
+ [AppService(ServiceType = typeof(IOrderSmartService), ServiceLifetime = LifeTime.Transient)]
public class OrderSmartService : BaseService, IOrderSmartService
{
@@ -36,57 +36,54 @@ namespace DOAN.Service.MES.SmartScreen.Order
var response = Queryable().ToList();
LargeScreenOrderDto largeScreenOrderDto = new LargeScreenOrderDto();
largeScreenOrderDto.OrderTotalNum = response.Count;
- largeScreenOrderDto.IncompleteOrderNum = response.Where(o=>o.Orderindicator!=1).Count();
+ largeScreenOrderDto.IncompleteOrderNum = response.Where(o => o.Orderindicator != 1).Count();
largeScreenOrderDto.CompletedOrderNum = response.Where(o => o.Orderindicator == 1).Count();
- largeScreenOrderDto.MonthOrderTotalNum = response.Where(o=>o.DeliveryDate>= firstDayOfMonth&&o.DeliveryDate <= lastDayOfMonth).Count();
- largeScreenOrderDto.MonthIncompleteOrderNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth && o.Orderindicator !=1).Count();
+ largeScreenOrderDto.MonthOrderTotalNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth).Count();
+ largeScreenOrderDto.MonthIncompleteOrderNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth && o.Orderindicator != 1).Count();
largeScreenOrderDto.MonthCompletedOrderNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth && o.Orderindicator == 1).Count();
return largeScreenOrderDto;
}
-
+
public List GetOrderProgress()
{
- var mainQuery = Queryable()
- // 使用链式 Join 并明确指定别名和关联条件
- .InnerJoin((order, pw) => order.OrderNoMes == pw.CustomerOrder)
- .InnerJoin((order, pw, pr) => pw.Workorder == pr.Workorder)
- .InnerJoin((order, pw, pr, bp) => pr.ProcessId == bp.Id)
- // 按订单号分组
- .GroupBy((order, pw, pr, bp) => order.OrderNoMes)
- // 主查询字段选择
- .Select((order, pw, pr, bp) => new OrderProgressDto
- {
- OrderNo = order.OrderNoMes,
- MaterialName = order.MaterialName,
- PlanNum = order.DemandQuantity,
- // 保留子查询占位符,后续通过 SplitTable 填充
- productionProcesses = new List()
- });
- // 子查询(获取工序明细)
- var subQuery = Queryable()
- .InnerJoin((order, pw) => order.OrderNoMes == pw.CustomerOrder)
- .InnerJoin((order, pw, pr) => pw.Workorder == pr.Workorder)
- .InnerJoin((order, pw, pr, bp) => pr.ProcessId == bp.Id)
- .Select((order, pw, pr, bp) => new ProductionProcesses
- {
- OrderNo = order.OrderNoMes, // 必须包含关联字段
- ProcessName = bp.Name,
- Num = pr.FinishNum
- });
- // 使用 Mapper 进行结果合并
- var result = mainQuery.MergeTable() // 合并主查询
- .Mapper(mainResult =>
- {
- // 根据 OrderNo 关联子查询
- mainResult.productionProcesses = subQuery
- .Where(order => order.OrderNo == mainResult.OrderNo)
- .ToList();
- }).ToList();
+ List orderProgressDtos = new List();
- return result;
+ //获取全部的订单计划表
+ List orderPurchaseList = Queryable().Where(o=>o.Orderindicator!=1).ToList();
+ List ordernomes = new List();
+ ordernomes=orderPurchaseList.Select(o=>o.OrderNoMes).Distinct().ToList();
+
+
+ //工序基础表
+ List baseWorkProcesses = Context.Queryable().Where(o => o.Status==1).ToList();
+
+ foreach (var orderPurchase in orderPurchaseList)
+ {
+ OrderProgressDto orderProgressDto = new OrderProgressDto();
+ orderProgressDto.productionProcesses = new List();
+ orderProgressDto.OrderNoMes = orderPurchase.OrderNoMes;
+ orderProgressDto.PlanNum = orderPurchase.DemandQuantity;
+ orderProgressDto.FinishNum = orderPurchase.DeliveryQuantity;
+ orderProgressDto.MaterialName = orderPurchase.MaterialName;
+
+ List proWorkorders = Context.Queryable().Where(o => o.CustomerOrder == orderPurchase.OrderNoMes).ToList();
+ List workorders = proWorkorders.Select(o=>o.Workorder).Distinct().ToList();
+
+ //获取全部的ProReportwork01
+ List proReportwork01s = Context.Queryable().Where(o => workorders.Contains(o.Workorder)).ToList();
+ foreach (var baseWorkProcesse in baseWorkProcesses)
+ {
+ ProductionProcesses productionProcesses = new ProductionProcesses();
+ productionProcesses.Id= baseWorkProcesse.Id;
+ productionProcesses.Num = proReportwork01s.Where(o=>o.ProcessId== baseWorkProcesse.Id).Sum(o=>o.FinishNum);
+ orderProgressDto.productionProcesses.Add(productionProcesses);
+ }
+ orderProgressDtos.Add(orderProgressDto);
+ }
+ return orderProgressDtos;
}
}
}