diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs
index d1a249a3..05c8552a 100644
--- a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs
@@ -135,11 +135,11 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC
/// 查询值
/// QcCommonFqcBoardDto 看板数据
[HttpPost("getProductAndPolishAndOneTimeFqcBoardData")]
- public IActionResult GetProductAndPolishAndOneTimeFqcBoardData()
+ public IActionResult GetProductAndPolishAndOneTimeFqcBoardData([FromBody] QcProductAndPolishAndOneTimeFqcBoardQuery query)
{
try
{
- var result = _commonFQCService.GetProductAndPolishAndOneTimeFqcBoardData();
+ var result = _commonFQCService.GetProductAndPolishAndOneTimeFqcBoardData(query);
return ToResponse(new ApiResult(200, "ok", result));
}
catch (Exception ex)
diff --git a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs
index 12d5bed5..eb70d819 100644
--- a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs
+++ b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs
@@ -173,6 +173,26 @@
public string Remark { get; set; } = default;
}
+
+ ///
+ /// 产线,抛光,一次合格品质量报表看板查询条件
+ ///
+ public class QcProductAndPolishAndOneTimeFqcBoardQuery
+ {
+ ///
+ /// 物料号(成品零件号)
+ ///
+ public string Partnumber { get; set; }
+ ///
+ /// 开始时间
+ ///
+ public DateTime? StartTime { get; set; } = default;
+ ///
+ /// 开始时间
+ ///
+ public DateTime? EndTime { get; set; } = default;
+ }
+
///
/// 产线,抛光,一次合格品质量报表看板
///
diff --git a/ZR.Service/mes/qc/CommonFQCService.cs b/ZR.Service/mes/qc/CommonFQCService.cs
index 19ab757b..e900f2ea 100644
--- a/ZR.Service/mes/qc/CommonFQCService.cs
+++ b/ZR.Service/mes/qc/CommonFQCService.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -515,86 +516,276 @@ namespace ZR.Service.mes.qc
// 获取产线相关数据
public QcProductAndPolishAndOneTimeFqcBoardDto GetProductTotal(
- QcProductAndPolishAndOneTimeFqcBoardDto boardData
+ QcProductAndPolishAndOneTimeFqcBoardDto boardData,
+ QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
+ var predicate1 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.FinishedPartNumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
+ var predicate2 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.FinishedPartNumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
boardData.ProductRequireTotal =
- Context.Queryable().Sum(it => it.RequireNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.RequireNumber) ?? 0;
boardData.ProductQualifiedTotal =
- Context.Queryable().Sum(it => it.QualifiedNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.ProductPolishTotal =
- Context.Queryable().Sum(it => it.PaoguangTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.PaoguangTotal) ?? 0;
boardData.ProductSandingTotal =
- Context.Queryable().Sum(it => it.DamoTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.DamoTotal) ?? 0;
boardData.ProductDiscardTotal =
- Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.BaofeiTotal) ?? 0;
return boardData;
}
// 获取抛光相关数据
public QcProductAndPolishAndOneTimeFqcBoardDto GetPolishTotal(
- QcProductAndPolishAndOneTimeFqcBoardDto boardData
+ QcProductAndPolishAndOneTimeFqcBoardDto boardData,
+ QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
+ var predicateInventory = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .ToExpression();
+ var predicate1 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
+ var predicate2 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
boardData.PolishWarehouseTotal =
- Context.Queryable().Sum(it => it.Quantity) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicateInventory)
+ .Sum(it => it.Quantity) ?? 0;
boardData.PolishRequireTotal =
- Context.Queryable().Sum(it => it.RequireNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.RequireNumber) ?? 0;
boardData.PolishQualifiedTotal =
- Context.Queryable().Sum(it => it.QualifiedNumber)
- ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishSandingTotal =
- Context.Queryable().Sum(it => it.DamoTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.DamoTotal) ?? 0;
boardData.PolishDiscardTotal =
- Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.BaofeiTotal) ?? 0;
boardData.AfterPolishRequireTotal =
- Context.Queryable().Sum(it => it.RequireNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.RequireNumber) ?? 0;
boardData.AfterPolishQualifiedTotal =
- Context.Queryable().Sum(it => it.QualifiedNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.AfterPolishPolishTotal =
- Context.Queryable().Sum(it => it.PaoguangTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.PaoguangTotal) ?? 0;
boardData.AfterPolishSandingTotal =
- Context.Queryable().Sum(it => it.DamoTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.DamoTotal) ?? 0;
boardData.AfterPolishDiscardTotal =
- Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.BaofeiTotal) ?? 0;
return boardData;
}
// 获取一次合格品相关数据
public QcProductAndPolishAndOneTimeFqcBoardDto GetOneTimeTotal(
- QcProductAndPolishAndOneTimeFqcBoardDto boardData
+ QcProductAndPolishAndOneTimeFqcBoardDto boardData,
+ QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
+ var predicate1 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .ToExpression();
+ var predicate2 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
boardData.OneTimeWarehouseTotal =
- Context.Queryable().Sum(it => it.Quantity) ?? 0;
+ Context.Queryable().Where(predicate1).Sum(it => it.Quantity)
+ ?? 0;
boardData.GP12RequireTotal =
- Context.Queryable().Sum(it => it.RequireNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.RequireNumber) ?? 0;
boardData.GP12QualifiedTotal =
- Context.Queryable().Sum(it => it.QualifiedNumber) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12PolishTotal =
- Context.Queryable().Sum(it => it.PaoguangTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.PaoguangTotal) ?? 0;
boardData.GP12SandingTotal =
- Context.Queryable().Sum(it => it.DamoTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.DamoTotal) ?? 0;
boardData.GP12DiscardTotal =
- Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0;
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.BaofeiTotal) ?? 0;
return boardData;
}
// 获取成品仓库相关数据
public QcProductAndPolishAndOneTimeFqcBoardDto GetFinishProductTotal(
- QcProductAndPolishAndOneTimeFqcBoardDto boardData
+ QcProductAndPolishAndOneTimeFqcBoardDto boardData,
+ QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
+ var predicate1 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.EntryWarehouseTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.EntryWarehouseTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
+ var predicate2 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.OutTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(query.EndTime != null, it => it.OutTime <= query.EndTime.Value.ToLocalTime())
+ .ToExpression();
boardData.FinishProductPartTotal =
- Context.Queryable().Sum(it => it.GoodsNumAction) ?? 0;
- boardData.FinishProductPackageTotal = Context.Queryable().Count();
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.GoodsNumAction) ?? 0;
+ boardData.FinishProductPackageTotal = Context
+ .Queryable()
+ .Where(predicate1)
+ .Count();
boardData.FinishProductPartOutTotal =
- Context.Queryable().Sum(it => it.GoodsNumAction) ?? 0;
- boardData.FinishProductPackageOutTotal = Context.Queryable().Count();
+ Context.Queryable().Where(predicate2).Sum(it => it.GoodsNumAction)
+ ?? 0;
+ boardData.FinishProductPackageOutTotal = Context
+ .Queryable()
+ .Where(predicate2)
+ .Count();
return boardData;
}
@@ -602,15 +793,25 @@ namespace ZR.Service.mes.qc
/// 获取产线,抛光,一次合格品质量报表看板数据
///
///
- public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData()
+ public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(
+ QcProductAndPolishAndOneTimeFqcBoardQuery query
+ )
{
QcProductAndPolishAndOneTimeFqcBoardDto result = new();
- result = GetProductTotal(result);
- result = GetPolishTotal(result);
- result = GetOneTimeTotal(result);
- result = GetFinishProductTotal(result);
- result.SandingTotal = result.ProductSandingTotal + result.PolishSandingTotal + result.AfterPolishSandingTotal + result.GP12SandingTotal;
- result.DiscardTotal = result.ProductDiscardTotal + result.PolishDiscardTotal + result.AfterPolishDiscardTotal + result.GP12DiscardTotal;
+ result = GetProductTotal(result, query);
+ result = GetPolishTotal(result, query);
+ result = GetOneTimeTotal(result, query);
+ result = GetFinishProductTotal(result, query);
+ result.SandingTotal =
+ result.ProductSandingTotal
+ + result.PolishSandingTotal
+ + result.AfterPolishSandingTotal
+ + result.GP12SandingTotal;
+ result.DiscardTotal =
+ result.ProductDiscardTotal
+ + result.PolishDiscardTotal
+ + result.AfterPolishDiscardTotal
+ + result.GP12DiscardTotal;
result.UpdatedTime = DateTime.Now.ToLocalTime();
return result;
}
diff --git a/ZR.Service/mes/qc/IService/ICommonFQCService.cs b/ZR.Service/mes/qc/IService/ICommonFQCService.cs
index 916a5d75..4a0b5444 100644
--- a/ZR.Service/mes/qc/IService/ICommonFQCService.cs
+++ b/ZR.Service/mes/qc/IService/ICommonFQCService.cs
@@ -44,7 +44,7 @@ namespace ZR.Service.mes.qc.IService
/// 获取产线,抛光,一次合格品质量报表看板数据
///
///
- public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData();
+ public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(QcProductAndPolishAndOneTimeFqcBoardQuery query);
}
}