订单大屏
This commit is contained in:
@@ -38,5 +38,17 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Order
|
||||
var response = _OrderSmartService.GetLargeScreenOrder();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 订单进度
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetOrderProgress")]
|
||||
public IActionResult GetOrderProgress()
|
||||
{
|
||||
|
||||
var response = _OrderSmartService.GetOrderProgress();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,17 @@ namespace DOAN.Model.MES.product
|
||||
[SugarColumn(IsPrimaryKey = true, IsIdentity = false)]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工单号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "fk_workorder")]
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 工序id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "process_id")]
|
||||
public int? ProcessId { get; set; }
|
||||
/// <summary>
|
||||
/// 工单号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "fk_workorder")]
|
||||
public string FkWorkorder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
||||
42
DOAN.Model/MES/SmartScreen/Order/Dto/LargeScreenOrderDto.cs
Normal file
42
DOAN.Model/MES/SmartScreen/Order/Dto/LargeScreenOrderDto.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.SmartScreen.Order.Dto
|
||||
{
|
||||
public class LargeScreenOrderDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单总数
|
||||
/// </summary>
|
||||
public int OrderTotalNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 未完成订单总数
|
||||
/// </summary>
|
||||
public int IncompleteOrderNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 已完成订单总数
|
||||
/// </summary>
|
||||
public int CompletedOrderNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月订单总数
|
||||
/// </summary>
|
||||
public int MonthOrderTotalNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月已完成订单总数
|
||||
/// </summary>
|
||||
public int MonthIncompleteOrderNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月未完成订单总数
|
||||
/// </summary>
|
||||
public int MonthCompletedOrderNum { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
41
DOAN.Model/MES/SmartScreen/Order/Dto/OrderProgressDto.cs
Normal file
41
DOAN.Model/MES/SmartScreen/Order/Dto/OrderProgressDto.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.SmartScreen.Order.Dto
|
||||
{
|
||||
public class OrderProgressDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单号
|
||||
/// </summary>
|
||||
public string OrderNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料名称
|
||||
/// </summary>
|
||||
public string MaterialName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 计划数量
|
||||
/// </summary>
|
||||
public int? PlanNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工序集合
|
||||
/// </summary>
|
||||
public List<ProductionProcesses> productionProcesses { get; set; }
|
||||
}
|
||||
|
||||
public class ProductionProcesses
|
||||
{
|
||||
public string OrderNo { get; set; }
|
||||
public string ProcessName { get; set; }
|
||||
|
||||
|
||||
public int? Num { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.SmartScreen.Order
|
||||
{
|
||||
public class LargeScreenOrderDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单总数
|
||||
/// </summary>
|
||||
public int OrderTotalNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 未完成订单总数
|
||||
/// </summary>
|
||||
public int IncompleteOrderNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 已完成订单总数
|
||||
/// </summary>
|
||||
public int CompletedOrderNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月订单总数
|
||||
/// </summary>
|
||||
public int MonthOrderTotalNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月已完成订单总数
|
||||
/// </summary>
|
||||
public int MonthIncompleteOrderNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月未完成订单总数
|
||||
/// </summary>
|
||||
public int MonthCompletedOrderNum { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
using DOAN.Model.MES.order;
|
||||
using DOAN.Model.MES.order.Dto;
|
||||
using DOAN.Model.MES.SmartScreen.Order;
|
||||
using DOAN.Model.MES.SmartScreen.Order.Dto;
|
||||
using Infrastructure.Attribute;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System;
|
||||
@@ -11,12 +11,14 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Service.MES.SmartScreen.Order.IService
|
||||
{
|
||||
/// <summary>
|
||||
/// 采购订单service接口
|
||||
/// </summary>
|
||||
public interface IOrderSmartService : IBaseService<OrderPurchase>
|
||||
/// <summary>
|
||||
/// 采购订单service接口
|
||||
/// </summary>
|
||||
public interface IOrderSmartService : IBaseService<OrderPurchase>
|
||||
{
|
||||
|
||||
LargeScreenOrderDto GetLargeScreenOrder();
|
||||
|
||||
List<OrderProgressDto> GetOrderProgress();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,16 +8,18 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DOAN.Service.MES.SmartScreen.Order.IService;
|
||||
using DOAN.Model.MES.order.Dto;
|
||||
using DOAN.Model.MES.SmartScreen.Order;
|
||||
using MathNet.Numerics.Distributions;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using DOAN.Model.MES.SmartScreen.Order.Dto;
|
||||
using DOAN.Model.MES.product;
|
||||
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
|
||||
{
|
||||
@@ -41,5 +43,50 @@ namespace DOAN.Service.MES.SmartScreen.Order
|
||||
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<ProReportwork>((order, pw, pr) => pw.Workorder == pr.FkWorkorder)
|
||||
.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<ProReportwork>((order, pw, pr) => pw.Workorder == pr.FkWorkorder)
|
||||
.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.FinishedNum
|
||||
});
|
||||
// 使用 Mapper 进行结果合并
|
||||
var result = mainQuery.MergeTable() // 合并主查询
|
||||
.Mapper(mainResult =>
|
||||
{
|
||||
// 根据 OrderNo 关联子查询
|
||||
mainResult.productionProcesses = subQuery
|
||||
.Where(sub => sub.OrderNo == mainResult.OrderNo)
|
||||
.ToList();
|
||||
}).ToList();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user