From f3eb86b73c4262cb0cecb3a4de3dc0af75a1240e Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 04 9月 2024 15:41:42 +0800 Subject: [PATCH] 1 --- iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs | 193 ++++++++++++++++++++++++++---------------------- 1 files changed, 104 insertions(+), 89 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 deb9131..983544f 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; @@ -68,33 +71,44 @@ [HttpGet("workPieceProcessMachiningPage")] public async Task<PageResult<WorkPieceProcessOutput>> WorkPieceProcessMachiningPage([FromQuery] WorkPieceProcessSearch input) { - //var LeftJoin = from emp in ListOfEmployees - // join dept in ListOfDepartment - // on emp.DeptID equals dept.ID into JoinedEmpDept - // from dept in JoinedEmpDept.DefaultIfEmpty() - // select new - // { - // EmployeeName = emp.Name, - // DepartmentName = dept != null ? dept.Name : null - // }; 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.CreatedUserName.Contains(string.IsNullOrEmpty(input.createUserName) ? "" : input.createUserName) + && process.UpdatedUserName.Contains(string.IsNullOrEmpty(input.updatedUserName) ? "" : input.updatedUserName) + + && ( + (input.IsHaveOP80Code == "N" && string.IsNullOrEmpty(workPiece2.OP80NewCode)) + || (input.IsHaveOP80Code == "Y" && !string.IsNullOrEmpty(workPiece2.OP80NewCode)) + || (string.IsNullOrEmpty(input.IsHaveOP80Code) && 1 == 1) + ) + && 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 { - + UpdatedUserName = process.UpdatedUserName, + DataCapturePointCname = process.DataCapturePointCname, + UpdateDataCapturePointCname = process.UpdateDataCapturePointCname, + QualityNoOk = process.QualityNoOk, + QualityNoOkReason = process.QualityNoOkReason, Id = process.Id, WorkPieceID = process.WorkPieceID, EquipmentID = process.EquipmentID, @@ -112,60 +126,6 @@ .ProjectToType<WorkPieceProcessOutput>() .ToADPagedListAsync(input.PageNo, input.PageSize); - // var workPieceProcesss1 = _workPieceProcessRep.DetachedEntities.GroupJoin(_equipmentBaseInfoRep.DetachedEntities - // , process => process.EquipmentID - //, baseinfo => baseinfo.EquipmentId - //, (process, baseinfo) => new { a = process, b = baseinfo.FirstOrDefault() }) - // .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.a.WorkPieceID.Contains(input.WorkPieceID)) - //.Where(!string.IsNullOrEmpty(input.QualityState.ToString()), u => u.a.QualityState == input.QualityState) - //.Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.a.EquipmentID.Equals(input.EquipmentID)) - //.Where(!string.IsNullOrEmpty(input.WorkingProcedureCurrent), u => u.a.WorkingProcedureCurrent.Equals(input.WorkingProcedureCurrent)) - //.Where(!string.IsNullOrEmpty(input.StartTime.ToString()), u => u.a.StartTime >= input.StartTime) - //.Where(!string.IsNullOrEmpty(input.EndTime.ToString()), u => u.a.EndTime <= input.EndTime) - //.Select(s => new WorkPieceProcessOutput - //{ - // Id = s.a.Id, - // WorkPieceID = s.a.WorkPieceID, - // EquipmentID = s.a.EquipmentID, - // EquipmentName = (s.b == null ? "" : s.b.EquipmentName), - // WorkingProcedureCurrent = s.a.WorkingProcedureCurrent, - // StartTime = s.a.StartTime, - // EndTime = s.a.EndTime, - // QualityState = s.a.QualityState, - // QualityDataInfoID = s.a.QualityDataInfoID - //}).ToList(); - // .OrderBy(PageInputOrder.OrderBuilder<WorkPieceProcessSearch>(input)) - //.ProjectToType<WorkPieceProcessOutput>() - // .ToADPagedListAsync(input.PageNo, input.PageSize) - ; - - - //var workPieceProcesss = await _workPieceProcessRep.DetachedEntities - // .Join(_equipmentBaseInfoRep.DetachedEntities, a => a.EquipmentID, b => b.EquipmentId, (a, b) => new { a, b }) - // .Join(_sysDictDataRep.DetachedEntities, e => e.a.QualityState.ToString(), f => f.Code, (e, f) => new { e, f }) - // .Join(_sysDictTypeRep.DetachedEntities, g => g.f.TypeId, h => h.Id, (f, g) => new { f, g }) - // .Where(x => (x.g.Code.Equals("quality_state"))) - // .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.f.e.a.WorkPieceID.Contains(input.WorkPieceID)) - // .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.f.e.a.EquipmentID.Equals(input.EquipmentID)) - // .Where(!string.IsNullOrEmpty(input.QualityState.ToString()), u => u.f.e.a.QualityState == input.QualityState) - // .Where(!string.IsNullOrEmpty(input.WorkingProcedureCurrent), u => u.f.e.a.WorkingProcedureCurrent.Equals(input.WorkingProcedureCurrent)) - // .Where(input.OnlineTimeBeginTime != null, u => u.f.e.a.StartTime >= input.OnlineTimeBeginTime) - // .Where(input.OnlineTimeEndTime != null, u => u.f.e.a.StartTime <= input.OnlineTimeEndTime) - // .Select(s => new WorkPieceProcessOutput - // { - // Id = s.f.e.a.Id, - // WorkPieceID = s.f.e.a.WorkPieceID, - // WorkingProcedureCurrent = s.f.e.a.WorkingProcedureCurrent, - // EquipmentID = s.f.e.a.EquipmentID, - // EquipmentName = s.f.e.b.EquipmentName, - // StartTime = s.f.e.a.StartTime, - // EndTime = s.f.e.a.EndTime, - // QualityStateName = s.f.f.Value, - // }) - // .Distinct() - // .OrderBy(PageInputOrder.OrderBuilder<WorkPieceProcessSearch>(input)) - // .ProjectToType<WorkPieceProcessOutput>() - // .ToADPagedListAsync(input.PageNo, input.PageSize); return workPieceProcesss; } @@ -189,12 +149,24 @@ && 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.CreatedUserName.Contains(string.IsNullOrEmpty(input.createUserName) ? "" : input.createUserName) + && process.UpdatedUserName.Contains(string.IsNullOrEmpty(input.updatedUserName) ? "" : input.updatedUserName) + + + && ( + (input.IsHaveOP80Code == "N" && string.IsNullOrEmpty(workPiece2.OP80NewCode)) + || (input.IsHaveOP80Code == "Y" && !string.IsNullOrEmpty(workPiece2.OP80NewCode)) + || (string.IsNullOrEmpty(input.IsHaveOP80Code) && 1 == 1) + ) + && 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, @@ -210,31 +182,6 @@ .ProjectToType<WorkPieceProcessExcelOutput>() .ToListAsync(); - //var workPieceMachiningInfos = await _workPieceProcessRep.DetachedEntities - // .Join(_equipmentBaseInfoRep.DetachedEntities, a => a.EquipmentID, b => b.EquipmentId, (a, b) => new { a, b }) - // .Join(_sysDictDataRep.DetachedEntities, e => e.a.QualityState.ToString(), f => f.Code, (e, f) => new { e, f }) - // .Join(_sysDictTypeRep.DetachedEntities, g => g.f.TypeId, h => h.Id, (f, g) => new { f, g }) - // .Where(x => (x.g.Code.Equals("quality_state"))) - // .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.f.e.a.WorkPieceID.Contains(input.WorkPieceID)) - // .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.f.e.a.EquipmentID.Equals(input.EquipmentID)) - // .Where(!string.IsNullOrEmpty(input.QualityState.ToString()), u => u.f.e.a.QualityState == input.QualityState) - // .Where(!string.IsNullOrEmpty(input.WorkingProcedureCurrent), u => u.f.e.a.WorkingProcedureCurrent.Equals(input.WorkingProcedureCurrent)) - // .Where(input.OnlineTimeBeginTime != null, u => u.f.e.a.StartTime >= input.OnlineTimeBeginTime) - // .Where(input.OnlineTimeEndTime != null, u => u.f.e.a.StartTime <= input.OnlineTimeEndTime) - // .Select(s => new WorkPieceProcessExcelOutput - // { - // Id = s.f.e.a.Id, - // WorkPieceID = s.f.e.a.WorkPieceID, - // WorkingProcedureCurrent = s.f.e.a.WorkingProcedureCurrent, - // EquipmentName = s.f.e.b.EquipmentName, - // StartTime = s.f.e.a.StartTime.ToString(), - // EndTime = s.f.e.a.EndTime.ToString(), - // QualityStateName = s.f.f.Value, - // }) - // .Distinct() - // .OrderBy(PageInputOrder.OrderBuilder<WorkPieceProcessSearch>(input)) - // .ProjectToType<WorkPieceProcessExcelOutput>() - // .ToListAsync(); foreach (WorkPieceProcessExcelOutput item in workPieceMachiningInfos) { @@ -331,6 +278,63 @@ #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.PieceLogTypeName), u => u.PieceLogTypeName.Contains(input.PieceLogTypeName)) + .Where(input.PieceLogType != null, u => u.PieceLogType == input.PieceLogType) + .Where(!string.IsNullOrEmpty(input.remarks), u => u.Remarks.Contains(input.remarks)) + .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, + 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 + /// <summary> /// 鍒嗛〉鏌ヨ宸ヤ欢鍔犲伐(宸ヤ欢淇℃伅琛�) /// </summary> @@ -346,6 +350,10 @@ .Where(x => (x.g.Code.Equals("workpiece_state") && (string.IsNullOrEmpty(input.WorkPieceState.ToString()) ? true : x.f.f.Code.Equals(input.WorkPieceState.ToString())))) .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.f.e.a.WorkPieceID.Contains(input.WorkPieceID)) .Where(!string.IsNullOrEmpty(input.OP80NewCode), u => u.f.e.a.OP80NewCode.Contains(input.OP80NewCode)) + + .Where(input.IsHaveOP80Code == "Y", u => !string.IsNullOrEmpty(u.f.e.a.OP80NewCode)) + .Where(input.IsHaveOP80Code == "N", u => string.IsNullOrEmpty(u.f.e.a.OP80NewCode)) + .Where(!string.IsNullOrEmpty(input.WorkPieceState.ToString()), u => u.f.e.a.WorkPieceState == input.WorkPieceState) .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.f.e.a.EquipmentID.Equals(input.EquipmentID)) .Where(!string.IsNullOrEmpty(input.WorkingProcedureCurrent), u => u.f.e.a.WorkingProcedureCurrent.Equals(input.WorkingProcedureCurrent)) @@ -355,7 +363,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, @@ -392,6 +403,10 @@ .Where(x => (x.g.Code.Equals("workpiece_state") && (string.IsNullOrEmpty(input.WorkPieceState.ToString()) ? true : x.f.f.Code.Equals(input.WorkPieceState.ToString())))) .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.f.e.a.WorkPieceID.Contains(input.WorkPieceID)) .Where(!string.IsNullOrEmpty(input.OP80NewCode), u => u.f.e.a.OP80NewCode.Contains(input.OP80NewCode)) + + .Where(input.IsHaveOP80Code == "Y", u => !string.IsNullOrEmpty(u.f.e.a.OP80NewCode)) + .Where(input.IsHaveOP80Code == "N", u => string.IsNullOrEmpty(u.f.e.a.OP80NewCode)) + .Where(!string.IsNullOrEmpty(input.WorkPieceState.ToString()), u => u.f.e.a.WorkPieceState == input.WorkPieceState) .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.f.e.a.EquipmentID.Equals(input.EquipmentID)) .Where(!string.IsNullOrEmpty(input.WorkingProcedureCurrent), u => u.f.e.a.WorkingProcedureCurrent.Equals(input.WorkingProcedureCurrent)) -- Gitblit v1.9.3