From bc42866b302006865a605da028a447592b5dbda9 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 11 6月 2024 15:04:36 +0800
Subject: [PATCH] 工序产量查询

---
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs |  143 +++++++++++++++++++++++------------------------
 1 files changed, 70 insertions(+), 73 deletions(-)

diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
index ca9e64d..a5bd838 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
@@ -16,7 +16,9 @@
 using System.Linq;
 using System.Linq.Dynamic.Core;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Web;
+using static OfficeOpenXml.FormulaParsing.EpplusExcelDataProvider;
 
 namespace iWare.Wms.Application
 {
@@ -261,41 +263,70 @@
         [HttpGet("queryYield")]
         public async Task<PageResult<QueryYieldOutput>> QueryYield([FromQuery] WorkPieceProcessSearch input)
         {
-          
-            var workPieceProcesss = await (from process in _workPieceProcessRep.DetachedEntities
-                                           join baseinfo in _equipmentBaseInfoRep.DetachedEntities on process.EquipmentID equals baseinfo.EquipmentId into joinedEmpty
-                                           from baseinfo2 in joinedEmpty.DefaultIfEmpty()
-                                           join workPiece in _workPieceInfoRep.DetachedEntities on process.WorkPieceID equals workPiece.WorkPieceID into joined2Empty
-                                           from workPiece2 in joined2Empty.DefaultIfEmpty()
-                                           where process.IsDeleted == false && process.WorkPieceID.Contains(string.IsNullOrEmpty(input.WorkPieceID) ? "" : input.WorkPieceID)
-                     && process.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : process.QualityState)
-                     && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
-                     && process.WorkingProcedureCurrent == (string.IsNullOrEmpty(input.WorkingProcedureCurrent) ? process.WorkingProcedureCurrent : input.WorkingProcedureCurrent)
-                     && workPiece2.OP80NewCode == (string.IsNullOrEmpty(input.OP80NewCode) ? workPiece2.OP80NewCode : input.OP80NewCode)
-                     && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
-                     && process.OperationType == (string.IsNullOrEmpty(input.OperationType) ? process.OperationType : input.OperationType)
-                     && !string.IsNullOrEmpty(process.WorkPieceID)
-                     && process.StartTime >= (input.StartTimeBeginTime.HasValue ? input.StartTimeBeginTime : DateTime.MinValue)
-                     && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
-                                           select new WorkPieceProcessOutput
-                                           {
 
-                                               Id = process.Id,
-                                               WorkPieceID = process.WorkPieceID,
-                                               EquipmentID = process.EquipmentID,
-                                               EquipmentName = (baseinfo2 == null ? "" : baseinfo2.EquipmentName),
-                                               OP80NewCode = workPiece2.OP80NewCode,
+            var workPieceProcesss2 = await (from process in _workPieceProcessRep.DetachedEntities
+                                                //join baseinfo in _equipmentBaseInfoRep.DetachedEntities on process.EquipmentID equals baseinfo.EquipmentId into joinedEmpty
+                                                //from baseinfo2 in joinedEmpty.DefaultIfEmpty()
+                                                //join workPiece in _workPieceInfoRep.DetachedEntities on process.WorkPieceID equals workPiece.WorkPieceID into joined2Empty
+                                                //from workPiece2 in joined2Empty.DefaultIfEmpty()
+                                            where process.IsDeleted == false && process.WorkPieceID.Contains(string.IsNullOrEmpty(input.WorkPieceID) ? "" : input.WorkPieceID)
+                      && process.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : process.QualityState)
+                      && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+                      && process.WorkingProcedureCurrent == (string.IsNullOrEmpty(input.WorkingProcedureCurrent) ? process.WorkingProcedureCurrent : input.WorkingProcedureCurrent)
+                      //&& workPiece2.OP80NewCode == (string.IsNullOrEmpty(input.OP80NewCode) ? workPiece2.OP80NewCode : input.OP80NewCode)
+                      && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+                      && process.OperationType == (string.IsNullOrEmpty(input.OperationType) ? process.OperationType : input.OperationType)
+                      && !string.IsNullOrEmpty(process.WorkPieceID)
+                      && process.StartTime >= (input.StartTimeBeginTime.HasValue ? input.StartTimeBeginTime : DateTime.MinValue)
+                      && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
+                                            select new QueryYieldOutput
+                                            {
+                                                //EquipmentID = process.EquipmentID,
+                                                //EquipmentName = baseinfo2.EquipmentName,
+                                                WorkingProcedureCurrent = process.WorkingProcedureCurrent,
+                                                //StartTime = grouped.Key.StartTime,
+                                                YieldCount = 0
+                                            }).ToListAsync();
 
-                                               WorkingProcedureCurrent = process.WorkingProcedureCurrent,
-                                               StartTime = process.StartTime,
-                                               EndTime = process.EndTime,
-                                               QualityState = process.QualityState,
-                                               QualityDataInfoID = process.QualityDataInfoID,
-                                               OperationType = process.OperationType,
-                                               CreateUserName = process.CreatedUserName
-                                           }).OrderBy(o => o.StartTime)
-             .ProjectToType<QueryYieldOutput>()
-              .ToADPagedListAsync(input.PageNo, input.PageSize);
+            var workPieceProcesss = workPieceProcesss2.GroupBy(x => new { x.WorkingProcedureCurrent }).Select(y => new QueryYieldOutput
+            {
+                //EquipmentID = y.Key.EquipmentID,
+                //EquipmentName = y.Key.EquipmentName,
+                WorkingProcedureCurrent = y.Key.WorkingProcedureCurrent,
+                //StartTime = grouped.Key.StartTime,
+                YieldCount = y.ToList().Count
+            })
+              .ToADPagedList(input.PageNo, input.PageSize);
+
+            //var workPieceProcesss = await (from process in _workPieceProcessRep.DetachedEntities
+            //                               join baseinfo in _equipmentBaseInfoRep.DetachedEntities on process.EquipmentID equals baseinfo.EquipmentId into joinedEmpty
+            //                               from baseinfo2 in joinedEmpty.DefaultIfEmpty()
+            //                               join workPiece in _workPieceInfoRep.DetachedEntities on process.WorkPieceID equals workPiece.WorkPieceID into joined2Empty
+            //                               from workPiece2 in joined2Empty.DefaultIfEmpty()
+            //                               where process.IsDeleted == false && process.WorkPieceID.Contains(string.IsNullOrEmpty(input.WorkPieceID) ? "" : input.WorkPieceID)
+            //         && process.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : process.QualityState)
+            //         && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+            //         && process.WorkingProcedureCurrent == (string.IsNullOrEmpty(input.WorkingProcedureCurrent) ? process.WorkingProcedureCurrent : input.WorkingProcedureCurrent)
+            //         && workPiece2.OP80NewCode == (string.IsNullOrEmpty(input.OP80NewCode) ? workPiece2.OP80NewCode : input.OP80NewCode)
+            //         && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+            //         && process.OperationType == (string.IsNullOrEmpty(input.OperationType) ? process.OperationType : input.OperationType)
+            //         && !string.IsNullOrEmpty(process.WorkPieceID)
+            //         && process.StartTime >= (input.StartTimeBeginTime.HasValue ? input.StartTimeBeginTime : DateTime.MinValue)
+            //         && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
+            //                               //group new { process, baseinfo2 } by new { process.WorkingProcedureCurrent, process.EquipmentID, baseinfo2.EquipmentName } into grouped
+            //                               //group process by new { process.WorkingProcedureCurrent, process.EquipmentID } into grouped
+            //                               group process by new { process.WorkingProcedureCurrent } into grouped
+            //                               select new QueryYieldOutput
+            //                               {
+            //                                   // EquipmentID = grouped.Key.EquipmentID,
+            //                                   //EquipmentName = grouped.Key.EquipmentName,
+            //                                   WorkingProcedureCurrent = grouped.Key.WorkingProcedureCurrent,
+            //                                   //StartTime = grouped.Key.StartTime,
+            //                                   YieldCount = grouped.ToList().Count,
+
+            //                               }).OrderBy(o => o.StartTime)
+            // .ProjectToType<QueryYieldOutput>()
+            //  .ToADPagedListAsync(input.PageNo, input.PageSize);
 
             return workPieceProcesss;
         }
@@ -308,48 +339,14 @@
         [HttpGet("exportYield")]
         public async Task<IActionResult> ExportYield([FromQuery] WorkPieceProcessSearch input)
         {
-            var workPieceMachiningInfos = await (from process in _workPieceProcessRep.DetachedEntities
-                                                 join baseinfo in _equipmentBaseInfoRep.DetachedEntities
-                                               on process.EquipmentID equals baseinfo.EquipmentId into joinedEmpty
-                                                 from baseinfo2 in joinedEmpty.DefaultIfEmpty()
-                                                 join workPiece in _workPieceInfoRep.DetachedEntities on process.WorkPieceID equals workPiece.WorkPieceID into joined2Empty
-                                                 from workPiece2 in joined2Empty.DefaultIfEmpty()
-                                                 where process.IsDeleted == false && process.WorkPieceID.Contains(string.IsNullOrEmpty(input.WorkPieceID) ? "" : input.WorkPieceID)
-                    && process.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : process.QualityState)
-                                                 && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
-                                                 && process.WorkingProcedureCurrent == (string.IsNullOrEmpty(input.WorkingProcedureCurrent) ? process.WorkingProcedureCurrent : input.WorkingProcedureCurrent)
-                                                 && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
-                                                 && workPiece2.OP80NewCode == (string.IsNullOrEmpty(input.OP80NewCode) ? workPiece2.OP80NewCode : input.OP80NewCode)
-                    && process.OperationType == (string.IsNullOrEmpty(input.OperationType) ? process.OperationType : input.OperationType)
-                                                && !string.IsNullOrEmpty(process.WorkPieceID)
-                    && process.StartTime >= (input.StartTimeBeginTime.HasValue ? input.StartTimeBeginTime : DateTime.MinValue)
-                    && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
-                                                 select new WorkPieceProcessExcelOutput
-                                                 {
-                                                     OP80NewCode = workPiece2.OP80NewCode,
-
-                                                     Id = process.Id,
-                                                     WorkPieceID = process.WorkPieceID,
-                                                     //EquipmentID = process.EquipmentID,
-                                                     EquipmentName = (baseinfo2 == null ? "" : baseinfo2.EquipmentName),
-                                                     WorkingProcedureCurrent = process.WorkingProcedureCurrent,
-                                                     StartTime = process.StartTime.ToString(),
-                                                     EndTime = process.EndTime.ToString(),
-                                                     //QualityState = process.QualityState,
-                                                     CreateUserName = process.CreatedUserName
-                                                 }).OrderBy(o => o.StartTime).Distinct()
-            .ProjectToType<WorkPieceProcessExcelOutput>()
-             .ToListAsync();
-
-
-            foreach (WorkPieceProcessExcelOutput item in workPieceMachiningInfos)
-            {
-                item.StartTime = string.IsNullOrEmpty(item.StartTime) ? "" : Convert.ToDateTime(item.StartTime).ToString("yyyy-MM-dd hh:mm:ss");
-                item.EndTime = string.IsNullOrEmpty(item.EndTime) ? "" : Convert.ToDateTime(item.EndTime).ToString("yyyy-MM-dd hh:mm:ss");
-            }
+            input.PageNo = 1;
+            input.PageSize = 1000000;
+            var workPieceMachiningInfos2 = QueryYield(input);
+            var workPieceMachiningInfos = workPieceMachiningInfos2.Result.Rows.ToList();
+            var daList = workPieceMachiningInfos.Adapt<List<ExportYieldOutput>>();
 
             MemoryStream ms = new();
-            DataConvertUtil.ToExcelData(workPieceMachiningInfos, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+            DataConvertUtil.ToExcelData(daList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
                 out List<List<object>> data, out string sheetName);
 
             ExcelUtil.ToExcel(headers, data, sheetName, ms);

--
Gitblit v1.9.3