iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryYieldOutput.cs
@@ -10,153 +10,147 @@ /// <summary> /// 产量查询输出参数 /// </summary> public class QueryYieldOutput public class QueryYieldOutput: ExportYieldOutput { /// <summary> /// 工件号 /// </summary> public string WorkPieceID { get; set; } /// <summary> /// 成品码 /// </summary> public virtual string OP80NewCode { get; set; } /// <summary> /// 当前工序 /// </summary> public string WorkingProcedureCurrent { get; set; } /// <summary> /// 当前设备 /// </summary> public string EquipmentID { get; set; } /// <summary> /// 设备名称 /// </summary> public string EquipmentName { get; set; } /// <summary> /// 工序上线时间 /// </summary> public DateTime? StartTime { get; set; } private DateTime? m_EndTime = null; ///// <summary> ///// 工件号 ///// </summary> //public string WorkPieceID { get; set; } /// <summary> /// 工序下线时间 /// </summary> public DateTime? EndTime { get { ///// <summary> ///// 成品码 ///// </summary> //public virtual string OP80NewCode { get; set; } if (m_EndTime == null) { return null; } if (m_EndTime == Convert.ToDateTime("0001-01-01")) { return null; } else { return m_EndTime; } } set { m_EndTime = value; } } /// <summary> /// 加工时长 /// </summary> public string TimeSceonds { get { if (EndTime == null || StartTime == null || EndTime == Convert.ToDateTime("0001-01-01") || StartTime == Convert.ToDateTime("0001-01-01")) { return ""; } TimeSpan ts = Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime); return Convert.ToInt32(ts.TotalMinutes).ToString() + "min"; } } /// <summary> /// 质量状态 /// </summary> public int QualityState { get; set; } /// <summary> /// 质量状态名字 /// </summary> public string QualityStateName { get { if (1 == QualityState) { return "合格"; } else if (2 == QualityState) { //private DateTime? m_EndTime = null; return "不合格"; } else if (3 == QualityState) { ///// <summary> ///// 工序下线时间 ///// </summary> //public DateTime? EndTime //{ // get // { return "疑似"; } else { return ""; } } } // if (m_EndTime == null) // { // return null; // } /// <summary> /// 操作类型(SPC/生产) /// </summary> public string OperationType { get; set; } /// <summary> /// 操作类型 /// </summary> public string OperationTypeHand { get { string str = ""; if (string.IsNullOrEmpty(OperationType)) { str = "其他"; } else { str = OperationType; } return str; } } /// <summary> /// 质量信息id /// </summary> public long QualityDataInfoID { get; set; } // if (m_EndTime == Convert.ToDateTime("0001-01-01")) // { // return null; // } // else // { // return m_EndTime; // } // } // set { m_EndTime = value; } //} /// <summary> /// Id主键 /// </summary> public long Id { get; set; } /// <summary> /// 创建人 /// </summary> public string CreateUserName { get; set; } ///// <summary> ///// 加工时长 ///// </summary> //public string TimeSceonds //{ // get // { // if (EndTime == null || StartTime == null || EndTime == Convert.ToDateTime("0001-01-01") || StartTime == Convert.ToDateTime("0001-01-01")) // { // return ""; // } // TimeSpan ts = Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime); // return Convert.ToInt32(ts.TotalMinutes).ToString() + "min"; // } //} ///// <summary> ///// 质量状态 ///// </summary> //public int QualityState { get; set; } ///// <summary> ///// 质量状态名字 ///// </summary> //public string QualityStateName //{ // get // { // if (1 == QualityState) // { // return "合格"; // } // else if (2 == QualityState) // { // return "不合格"; // } // else if (3 == QualityState) // { // return "疑似"; // } // else // { // return ""; // } // } //} ///// <summary> ///// 操作类型(SPC/生产) ///// </summary> //public string OperationType { get; set; } ///// <summary> ///// 操作类型 ///// </summary> //public string OperationTypeHand //{ // get // { // string str = ""; // if (string.IsNullOrEmpty(OperationType)) // { // str = "其他"; // } // else // { // str = OperationType; // } // return str; // } //} ///// <summary> ///// 质量信息id ///// </summary> //public long QualityDataInfoID { get; set; } ///// <summary> ///// Id主键 ///// </summary> //public long Id { get; set; } ///// <summary> ///// 创建人 ///// </summary> //public string CreateUserName { get; set; } } @@ -166,11 +160,11 @@ [Description("产量查询")] public class ExportYieldOutput { /// <summary> /// 工件号 /// </summary> [Description("工件号")] public string WorkPieceID { get; set; } ///// <summary> ///// 设备名称 ///// </summary> //[Description("当前设备")] //public string EquipmentName { get; set; } /// <summary> /// 当前工序 @@ -178,111 +172,13 @@ [Description("当前工序")] public string WorkingProcedureCurrent { get; set; } /// <summary> /// 设备名称 /// </summary> [Description("设备名称")] public string EquipmentName { get; set; } /// <summary> /// 工序上线时间 /// 产量汇总 【Editby shaocx,2024-06-11】 /// </summary> [Description("上线时间")] public string StartTime { get; set; } private string m_EndTime = ""; /// <summary> /// 工序下线时间 /// </summary> [Description("下线时间")] public string EndTime { get { if (string.IsNullOrEmpty(m_EndTime)) { return ""; } if (m_EndTime.Contains("0001-01-01")) { return ""; } else { return m_EndTime; } } set { m_EndTime = value; } } /// <summary> /// 加工时长 /// </summary> [Description("加工时长")] public string TimeSceonds { get { if (string.IsNullOrEmpty(EndTime) || string.IsNullOrEmpty(StartTime)) { return ""; } TimeSpan ts = Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime); return Convert.ToInt32(ts.TotalMinutes).ToString() + "min"; } } /// <summary> /// 质量状态 /// </summary> public int QualityState { get; set; } /// <summary> /// 质量状态名称 /// </summary> [Description("质量状态")] public string QualityStateName { get { if (1 == QualityState) { return "合格"; } else if (2 == QualityState) { return "不合格"; } else if (3 == QualityState) { return "疑似"; } else { return ""; } } } /// <summary> /// 成品码 /// </summary> [Description("成品码")] public string OP80NewCode { get; set; } /// <summary> /// Id主键 /// </summary> public long Id { get; set; } /// <summary> /// 创建人 /// </summary> [Description("数据来源")] public string CreateUserName { get; set; } [Description("产量")] public int YieldCount { get; set; } } iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceProcessOutput.cs
@@ -26,6 +26,10 @@ /// </summary> public class WorkPieceProcessOutput { /// <summary> /// 工件号 /// </summary> 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 { @@ -262,40 +264,69 @@ 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() 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) //&& 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 select new QueryYieldOutput { Id = process.Id, WorkPieceID = process.WorkPieceID, EquipmentID = process.EquipmentID, EquipmentName = (baseinfo2 == null ? "" : baseinfo2.EquipmentName), OP80NewCode = workPiece2.OP80NewCode, //EquipmentID = process.EquipmentID, //EquipmentName = baseinfo2.EquipmentName, 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); //StartTime = grouped.Key.StartTime, YieldCount = 0 }).ToListAsync(); 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); iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
@@ -14926,79 +14926,9 @@ 产量查询输出参数 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.WorkPieceID"> <summary> 工件号 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.OP80NewCode"> <summary> 成品码 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.WorkingProcedureCurrent"> <summary> 当前工序 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.EquipmentID"> <summary> 当前设备 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.EquipmentName"> <summary> 设备名称 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.StartTime"> <summary> 工序上线时间 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.EndTime"> <summary> 工序下线时间 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.TimeSceonds"> <summary> 加工时长 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.QualityState"> <summary> 质量状态 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.QualityStateName"> <summary> 质量状态名字 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.OperationType"> <summary> 操作类型(SPC/生产) </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.OperationTypeHand"> <summary> 操作类型 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.QualityDataInfoID"> <summary> 质量信息id </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.Id"> <summary> Id主键 </summary> </member> <member name="P:iWare.Wms.Application.QueryYieldOutput.CreateUserName"> <summary> 创建人 </summary> </member> <member name="T:iWare.Wms.Application.ExportYieldOutput"> @@ -15006,59 +14936,14 @@ 产量查询导出输出参数 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.WorkPieceID"> <summary> 工件号 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.WorkingProcedureCurrent"> <summary> 当前工序 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.EquipmentName"> <member name="P:iWare.Wms.Application.ExportYieldOutput.YieldCount"> <summary> 设备名称 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.StartTime"> <summary> 工序上线时间 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.EndTime"> <summary> 工序下线时间 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.TimeSceonds"> <summary> 加工时长 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.QualityState"> <summary> 质量状态 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.QualityStateName"> <summary> 质量状态名称 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.OP80NewCode"> <summary> 成品码 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.Id"> <summary> Id主键 </summary> </member> <member name="P:iWare.Wms.Application.ExportYieldOutput.CreateUserName"> <summary> 创建人 产量汇总 【Editby shaocx,2024-06-11】 </summary> </member> <member name="T:iWare.Wms.Application.WorkPieceProcessDto"> iWara.SCADA.Code/iWare.Wms.Core/Util/PagedUtil.cs
@@ -68,7 +68,7 @@ PageNo = 1, PageSize = 1, Rows = new List<TEntity>(), TotalRows = 1, TotalRows = 0, TotalPage = 1 }; }