This commit is contained in:
qianhao.xu
2025-02-21 13:04:44 +08:00
parent f80aca492c
commit 218a1ce86a
8 changed files with 191 additions and 95 deletions

View File

@@ -22,35 +22,24 @@ namespace DOAN.Service.MES.Group
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public List<AchievementDto> GetstaffAchievementList(AchievementQueryDto parm)
public List<AchievementDto> GetstaffAchievementList(AchievementQueryDto parm)
{
var predicate = QueryExp(parm);
var result= Context.Queryable<ProReportwork01>().Where(predicate.ToExpression())
.GroupBy(x => x.Worker)
.Select(it=>new AchievementDto
var result = Context.Queryable<ProReportwork01>().Where(predicate.ToExpression())
.GroupBy(it => it.Worker)
.Select(it => new AchievementDto
{
Worker = it.Worker,
MaterialUse=SqlFunc.Subqueryable<ProReportwork01>().Where(x=>x.Worker==it.Worker&&x.ProcessId==10).Where(predicate.ToExpression()).Sum(x=>x.FinishNum??0),
MechanicalProcessing = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 20).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
MiddleCheck = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Handgrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Machinegrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Finegrind = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
WarehouseInspection = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
Shipment = SqlFunc.Subqueryable<ProReportwork01>().Where(x => x.Worker == it.Worker && x.ProcessId == 10).Where(predicate.ToExpression()).Sum(x => x.FinishNum ?? 0),
}).Distinct().ToList();
MaterialUse = SqlFunc.AggregateSum(it.ProcessId == 10 ? it.FinishNum ?? 0 : 0),
MechanicalProcessing = SqlFunc.AggregateSum(it.ProcessId == 20 ? it.FinishNum ?? 0 : 0),
MiddleCheck = SqlFunc.AggregateSum(it.ProcessId == 30 ? it.FinishNum ?? 0 : 0),
Handgrind = SqlFunc.AggregateSum(it.ProcessId == 40 ? it.FinishNum ?? 0 : 0),
Machinegrind = SqlFunc.AggregateSum(it.ProcessId == 50 ? it.FinishNum ?? 0 : 0),
Finegrind = SqlFunc.AggregateSum(it.ProcessId == 60 ? it.FinishNum ?? 0 : 0),
WarehouseInspection = SqlFunc.AggregateSum(it.ProcessId == 70 ? it.FinishNum ?? 0 : 0),
Shipment = SqlFunc.AggregateSum(it.ProcessId == 90 ? it.FinishNum ?? 0 : 0)
}).Distinct()
.ToList();
int index = 0;
foreach (var item in result)
{
@@ -62,11 +51,11 @@ namespace DOAN.Service.MES.Group
private static Expressionable<ProReportwork01> QueryExp(AchievementQueryDto parm)
{
var predicate = Expressionable.Create<ProReportwork01>()
.AndIF(!string.IsNullOrEmpty(parm.Worker), it => it.Worker.Contains(parm.Worker))
.AndIF(parm.JobDatetime != null&& parm.JobDatetime[0]>DateTime.MinValue, it => it.JobDateTime >=parm.JobDatetime[0])
.AndIF(parm.JobDatetime != null&& parm.JobDatetime[0]>DateTime.MinValue, it => it.JobDateTime <=parm.JobDatetime[1])
.AndIF(parm.JobDatetime != null && parm.JobDatetime[0] > DateTime.MinValue, it => it.JobDateTime >= parm.JobDatetime[0])
.AndIF(parm.JobDatetime != null && parm.JobDatetime[0] > DateTime.MinValue, it => it.JobDateTime <= parm.JobDatetime[1])
;
return predicate;