订单大屏
This commit is contained in:
@@ -11,7 +11,7 @@ namespace DOAN.Model.MES.SmartScreen.Order.Dto
|
||||
/// <summary>
|
||||
/// 订单号
|
||||
/// </summary>
|
||||
public string OrderNo { get; set; }
|
||||
public string OrderNoMes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料名称
|
||||
@@ -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; }
|
||||
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ using DOAN.Model.MES.base_;
|
||||
|
||||
namespace DOAN.Service.MES.SmartScreen.Order
|
||||
{
|
||||
/// <summary>
|
||||
/// 采购订单Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IOrderSmartService), ServiceLifetime = LifeTime.Transient)]
|
||||
/// <summary>
|
||||
/// 采购订单Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IOrderSmartService), ServiceLifetime = LifeTime.Transient)]
|
||||
|
||||
public class OrderSmartService : BaseService<OrderPurchase>, 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<OrderProgressDto> GetOrderProgress()
|
||||
{
|
||||
var mainQuery = Queryable()
|
||||
// 使用链式 Join 并明确指定别名和关联条件
|
||||
.InnerJoin<ProWorkorder>((order, pw) => order.OrderNoMes == pw.CustomerOrder)
|
||||
.InnerJoin<ProReportwork01>((order, pw, pr) => pw.Workorder == pr.Workorder)
|
||||
.InnerJoin<BaseWorkProcesses>((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<ProductionProcesses>()
|
||||
});
|
||||
|
||||
// 子查询(获取工序明细)
|
||||
var subQuery = Queryable()
|
||||
.InnerJoin<ProWorkorder>((order, pw) => order.OrderNoMes == pw.CustomerOrder)
|
||||
.InnerJoin<ProReportwork01>((order, pw, pr) => pw.Workorder == pr.Workorder)
|
||||
.InnerJoin<BaseWorkProcesses>((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<OrderProgressDto> orderProgressDtos = new List<OrderProgressDto>();
|
||||
|
||||
return result;
|
||||
//获取全部的订单计划表
|
||||
List<OrderPurchase> orderPurchaseList = Queryable().Where(o=>o.Orderindicator!=1).ToList();
|
||||
List<string> ordernomes = new List<string>();
|
||||
ordernomes=orderPurchaseList.Select(o=>o.OrderNoMes).Distinct().ToList();
|
||||
|
||||
|
||||
//工序基础表
|
||||
List<BaseWorkProcesses> baseWorkProcesses = Context.Queryable<BaseWorkProcesses>().Where(o => o.Status==1).ToList();
|
||||
|
||||
foreach (var orderPurchase in orderPurchaseList)
|
||||
{
|
||||
OrderProgressDto orderProgressDto = new OrderProgressDto();
|
||||
orderProgressDto.productionProcesses = new List<ProductionProcesses>();
|
||||
orderProgressDto.OrderNoMes = orderPurchase.OrderNoMes;
|
||||
orderProgressDto.PlanNum = orderPurchase.DemandQuantity;
|
||||
orderProgressDto.FinishNum = orderPurchase.DeliveryQuantity;
|
||||
orderProgressDto.MaterialName = orderPurchase.MaterialName;
|
||||
|
||||
List<ProWorkorder> proWorkorders = Context.Queryable<ProWorkorder>().Where(o => o.CustomerOrder == orderPurchase.OrderNoMes).ToList();
|
||||
List<string> workorders = proWorkorders.Select(o=>o.Workorder).Distinct().ToList();
|
||||
|
||||
//获取全部的ProReportwork01
|
||||
List<ProReportwork01> proReportwork01s = Context.Queryable<ProReportwork01>().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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user