From 11a0ed37d6fb4650d616cc94b11f07d283ea1e97 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周六, 31 8月 2024 16:09:29 +0800
Subject: [PATCH] 1

---
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs |   96 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 65 insertions(+), 31 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 bf155ef..4a34b15 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
@@ -35,6 +35,7 @@
         private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
         private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
         private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<WorkPieceLog, MasterDbContextLocator> _workPieceLogRep;
 
 
         /// <summary>
@@ -46,6 +47,7 @@
         /// <param name="sysDictTypeRep"></param>
         /// <param name="sysDictDataRep"></param>
         public WorkPieceProcessService(
+            IRepository<WorkPieceLog, MasterDbContextLocator> workPieceLogRep,
             IRepository<WorkPieceProcess, MasterDbContextLocator> workPieceProcessRep,
             IRepository<WorkPieceInfo, MasterDbContextLocator> workPieceInfoRep,
             IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
@@ -53,6 +55,7 @@
             IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
         )
         {
+            _workPieceLogRep = workPieceLogRep;
             _workPieceInfoRep = workPieceInfoRep;
             _workPieceProcessRep = workPieceProcessRep;
             _equipmentBaseInfoRep = equipmentBaseInfoRep;
@@ -94,7 +97,8 @@
                      && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
                                            select new WorkPieceProcessOutput
                                            {
-
+                                               QualityNoOk = process.QualityNoOk,
+                                               QualityNoOkReason = process.QualityNoOkReason,
                                                Id = process.Id,
                                                WorkPieceID = process.WorkPieceID,
                                                EquipmentID = process.EquipmentID,
@@ -284,9 +288,11 @@
                                                 //EquipmentID = process.EquipmentID,
                                                 //EquipmentName = baseinfo2.EquipmentName,
                                                 WorkingProcedureCurrent = process.WorkingProcedureCurrent,
+                                                WorkPieceID = process.WorkPieceID,
                                                 //StartTime = grouped.Key.StartTime,
                                                 YieldCount = 0
-                                            }).ToListAsync();
+                                            }).Distinct().ToListAsync();
+
 
             var workPieceProcesss = workPieceProcesss2.GroupBy(x => new { x.WorkingProcedureCurrent }).Select(y => new QueryYieldOutput
             {
@@ -299,35 +305,6 @@
             .OrderBy(x => x.WorkingProcedureCurrent)
               .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;
         }
@@ -345,6 +322,60 @@
             var workPieceMachiningInfos2 = QueryYield(input);
             var workPieceMachiningInfos = workPieceMachiningInfos2.Result.Rows.ToList();
             var daList = workPieceMachiningInfos.Adapt<List<ExportYieldOutput>>();
+
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(daList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+
+            ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        #endregion
+
+
+
+        #region 閲囬泦鏃ュ織鏌ヨ [Editby shaocx,2024-06-08]
+
+        /// <summary>
+        /// 閲囬泦鏃ュ織鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("queryWorkPieceLogYield")]
+        public async Task<PageResult<QueryWorkPieceLogYieldOutput>> QueryWorkPieceLogYield([FromQuery] WorkPieceLogYieldInput input)
+        {
+
+            var resutlt = await _workPieceLogRep.DetachedEntities
+                                    .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.WorkPieceID.Contains(input.WorkPieceID))
+                                    .Where(!string.IsNullOrEmpty(input.workingProcedure), u => u.WorkingProcedure.Contains(input.workingProcedure))
+                                      .Where(!string.IsNullOrEmpty(input.createdUserName), u => u.CreatedUserName.Contains(input.createdUserName))
+                                    .Where(!string.IsNullOrEmpty(input.StartTimeBeginTime.ToString()), u => u.CreatedTime >= input.StartTimeBeginTime)
+                                    .Where(!string.IsNullOrEmpty(input.StartTimeEndTime.ToString()), u => u.CreatedTime <= input.StartTimeEndTime)
+
+
+                                    .OrderBy(PageInputOrder.OrderBuilder<WorkPieceLogYieldInput>(input))
+                                    .ProjectToType<QueryWorkPieceLogYieldOutput>()
+                                    .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return resutlt;
+
+        }
+
+        /// <summary>
+        /// 瀵煎嚭閲囬泦鏃ュ織鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("exportWorkPieceLogYield")]
+        public async Task<IActionResult> ExportWorkPieceLogYield([FromQuery] WorkPieceLogYieldInput input)
+        {
+            input.PageNo = 1;
+            input.PageSize = 1000000;
+            var workPieceMachiningInfos2 = QueryWorkPieceLogYield(input);
+            var workPieceMachiningInfos = workPieceMachiningInfos2.Result.Rows.ToList();
+            var daList = workPieceMachiningInfos.Adapt<List<ExportYQueryWorkPieceLogYieldOutput>>();
 
             MemoryStream ms = new();
             DataConvertUtil.ToExcelData(daList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
@@ -382,7 +413,10 @@
                .Where(o => o.f.e.a.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : o.f.e.a.QualityState))
                .Select(s => new WorkPieceInfoMachiningPageOutput
                {
+                   QualityNoOk = s.f.e.a.QualityNoOk,
+                   QualityNoOkReason = s.f.e.a.QualityNoOkReason,
                    Id = s.f.e.a.Id,
+
                    WorkPieceID = s.f.e.a.WorkPieceID,
                    WorkPieceState = s.f.e.a.WorkPieceState,
                    WorkPieceStateName = s.f.f.Value,

--
Gitblit v1.9.3