From 77485ab49cb6d2c1af8cf8a27158ecc14e2b001b Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 11 6月 2024 11:06:56 +0800
Subject: [PATCH] OP30工序质量信息添加各工位质量显示
---
iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs | 193 +++++++++++++++++++++++++++++++++++++++--------
1 files changed, 158 insertions(+), 35 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 e4456f8..ca9e64d 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
@@ -25,9 +25,10 @@
/// </summary>
[ApiDescriptionSettings("鏁版嵁鏌ヨ鏈嶅姟", Name = "WorkPieceProcess", Order = 100)]
[Route("api/[Controller]")]
+ [DisableOpLog]
public class WorkPieceProcessService : IWorkPieceProcessService, IDynamicApiController, ITransient
{
- private readonly IRepository<WorkPieceProcess,MasterDbContextLocator> _workPieceProcessRep;
+ private readonly IRepository<WorkPieceProcess, MasterDbContextLocator> _workPieceProcessRep;
private readonly IRepository<WorkPieceInfo, MasterDbContextLocator> _workPieceInfoRep;
private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
@@ -43,7 +44,7 @@
/// <param name="sysDictTypeRep"></param>
/// <param name="sysDictDataRep"></param>
public WorkPieceProcessService(
- IRepository<WorkPieceProcess,MasterDbContextLocator> workPieceProcessRep,
+ IRepository<WorkPieceProcess, MasterDbContextLocator> workPieceProcessRep,
IRepository<WorkPieceInfo, MasterDbContextLocator> workPieceInfoRep,
IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
@@ -74,34 +75,38 @@
// 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()
- 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)
- && 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
- {
+ 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),
- 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)
+ Id = process.Id,
+ WorkPieceID = process.WorkPieceID,
+ EquipmentID = process.EquipmentID,
+ EquipmentName = (baseinfo2 == null ? "" : baseinfo2.EquipmentName),
+ OP80NewCode = workPiece2.OP80NewCode,
+
+ 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<WorkPieceProcessOutput>()
.ToADPagedListAsync(input.PageNo, input.PageSize);
@@ -174,17 +179,21 @@
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,
@@ -193,8 +202,8 @@
WorkingProcedureCurrent = process.WorkingProcedureCurrent,
StartTime = process.StartTime.ToString(),
EndTime = process.EndTime.ToString(),
- QualityState = process.QualityState,
- CreateUserName=process.CreatedUserName
+ //QualityState = process.QualityState,
+ CreateUserName = process.CreatedUserName
}).OrderBy(o => o.StartTime).Distinct()
.ProjectToType<WorkPieceProcessExcelOutput>()
.ToListAsync();
@@ -227,7 +236,7 @@
foreach (WorkPieceProcessExcelOutput item in workPieceMachiningInfos)
{
- item.StartTime = string.IsNullOrEmpty(item.StartTime) ? "" :Convert.ToDateTime(item.StartTime).ToString("yyyy-MM-dd hh:mm:ss");
+ 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");
}
@@ -240,6 +249,116 @@
var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
}
+
+
+ #region 浜ч噺鏌ヨ [Editby shaocx,2024-06-08]
+
+ /// <summary>
+ /// 浜ч噺鏌ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [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,
+
+ 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);
+
+ return workPieceProcesss;
+ }
+
+ /// <summary>
+ /// 瀵煎嚭浜ч噺鏌ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [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");
+ }
+
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(workPieceMachiningInfos, _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>
/// 鍒嗛〉鏌ヨ宸ヤ欢鍔犲伐(宸ヤ欢淇℃伅琛�)
@@ -255,13 +374,14 @@
.Join(_sysDictTypeRep.DetachedEntities, g => g.f.TypeId, h => h.Id, (f, g) => new { f, g })
.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(!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))
.Where(!string.IsNullOrEmpty(input.StartTimeBeginTime.ToString()), u => u.f.e.a.WorkPieceinitOnlineTime >= input.StartTimeBeginTime)
.Where(!string.IsNullOrEmpty(input.StartTimeEndTime.ToString()), u => u.f.e.a.WorkPieceinitOnlineTime <= input.StartTimeEndTime)
.Where(o => !string.IsNullOrEmpty(o.f.e.a.WorkPieceID))
- .Where(o=>o.f.e.a.QualityState== (input.QualityState.HasValue ? input.QualityState.Value : o.f.e.a.QualityState))
+ .Where(o => o.f.e.a.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : o.f.e.a.QualityState))
.Select(s => new WorkPieceInfoMachiningPageOutput
{
Id = s.f.e.a.Id,
@@ -276,7 +396,8 @@
QualityState = s.f.e.a.QualityState,
EquipmentID = s.f.e.a.EquipmentID,
EquipmentName = s.f.e.b.EquipmentName,
- OperationType = "姝e父"
+ OperationType = "姝e父",
+ OP80NewCode = s.f.e.a.OP80NewCode,
})
.OrderBy(PageInputOrder.OrderBuilder<WorkPieceProcessSearch>(input))
.ProjectToType<WorkPieceInfoMachiningPageOutput>()
@@ -299,6 +420,7 @@
.Join(_sysDictTypeRep.DetachedEntities, g => g.f.TypeId, h => h.Id, (f, g) => new { f, g })
.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(!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))
@@ -315,7 +437,8 @@
WorkPieceLastOfflineTime = s.f.e.a.WorkPieceLastOfflineTime.ToString(),
WorkPieceStateName = s.f.f.Value,
EquipmentName = s.f.e.b.EquipmentName,
- QualityState = s.f.e.a.QualityState,
+ //QualityState = s.f.e.a.QualityState,
+ OP80NewCode = s.f.e.a.OP80NewCode,
})
.Distinct()
.OrderBy(PageInputOrder.OrderBuilder<WorkPieceProcessSearch>(input))
--
Gitblit v1.9.3