HeReport - date input, from - to
Test protocol - legend, test state
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
namespace LaaProductionWeb.Services.Models
|
namespace LaaProductionWeb.Services.Models
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
@@ -9,8 +10,8 @@
|
|||||||
{
|
{
|
||||||
var model = default(HeliumReportItem);
|
var model = default(HeliumReportItem);
|
||||||
|
|
||||||
this.Add(model.Property(x => x.AuftragNr, this.Count));
|
|
||||||
this.Add(model.Property(x => x.FertigungNr, this.Count));
|
this.Add(model.Property(x => x.FertigungNr, this.Count));
|
||||||
|
this.Add(model.Property(x => x.AuftragNr, this.Count));
|
||||||
this.Add(model.Property(x => x.PositionNr, this.Count));
|
this.Add(model.Property(x => x.PositionNr, this.Count));
|
||||||
this.Add(model.Property(x => x.SerialNr, this.Count));
|
this.Add(model.Property(x => x.SerialNr, this.Count));
|
||||||
this.Add(model.Property(x => x.IdentNr, this.Count));
|
this.Add(model.Property(x => x.IdentNr, this.Count));
|
||||||
@@ -25,9 +26,9 @@
|
|||||||
this.Add(model.Property(x => x.HeLakeRate, this.Count));
|
this.Add(model.Property(x => x.HeLakeRate, this.Count));
|
||||||
this.Add(model.Property(x => x.HeTestPressure, this.Count));
|
this.Add(model.Property(x => x.HeTestPressure, this.Count));
|
||||||
this.Add(model.Property(x => x.IsValid, this.Count));
|
this.Add(model.Property(x => x.IsValid, this.Count));
|
||||||
this.Add(model.Property(x => x.Text, this.Count));
|
this.Add(model.DateTime(x => x.TestDate, this.Count, -1));
|
||||||
this.Add(model.Property(x => x.TestDate, this.Count, -1));
|
|
||||||
this.Add(model.Property(x => x.Tester, this.Count));
|
this.Add(model.Property(x => x.Tester, this.Count));
|
||||||
|
this.Add(model.Property(x => x.Text, this.Count));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal SqlExpression OrderBy()
|
internal SqlExpression OrderBy()
|
||||||
@@ -55,15 +56,35 @@
|
|||||||
|
|
||||||
foreach (var property in this)
|
foreach (var property in this)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(property.Like))
|
if (property.Type == "date")
|
||||||
|
{
|
||||||
|
if (property.Von != default(DateTime))
|
||||||
|
{
|
||||||
|
var propertyName = $"{property.Property}_{property.Index}_Von";
|
||||||
|
var propertyValue = $"{property.Column} >= @{propertyName}";
|
||||||
|
|
||||||
|
sqlExpression.Add($"{property.Column} >= @{propertyName}", propertyName, property.Von);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (property.Bis != default(DateTime))
|
||||||
|
{
|
||||||
|
var propertyName = $"{property.Property}_{property.Index}_Bis";
|
||||||
|
var propertyValue = $"{property.Column} <= @{propertyName}";
|
||||||
|
|
||||||
|
sqlExpression.Add($"{property.Column} <= @{propertyName}", propertyName, property.Bis);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (string.IsNullOrWhiteSpace(property.Like))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var propertyName = $"{property.Property}_{property.Index}";
|
||||||
|
var propertyValue = $"%{property.Like}%";
|
||||||
|
|
||||||
var propertyName = $"{property.Property}_{property.Index}";
|
sqlExpression.Add($"{property.Column} LIKE @{propertyName}", propertyName, propertyValue);
|
||||||
var propertyValue = $"%{property.Like}%";
|
}
|
||||||
|
|
||||||
sqlExpression.Add($"{property.Column} LIKE @{propertyName}", propertyName, propertyValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqlExpression.BuildWhere(" AND ");
|
return sqlExpression.BuildWhere(" AND ");
|
||||||
@@ -82,7 +103,7 @@
|
|||||||
internal void Add(string expression)
|
internal void Add(string expression)
|
||||||
=> this.expressions.Add(expression);
|
=> this.expressions.Add(expression);
|
||||||
|
|
||||||
internal void Add(string expression, string propertyName, string propertyValue)
|
internal void Add(string expression, string propertyName, object propertyValue)
|
||||||
{
|
{
|
||||||
this.Parameters[propertyName] = propertyValue;
|
this.Parameters[propertyName] = propertyValue;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
namespace LaaProductionWeb.Services.Models
|
namespace LaaProductionWeb.Services.Models
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
public class HeliumReportFilterProperty
|
public class HeliumReportFilterProperty
|
||||||
{
|
{
|
||||||
|
public string Type { get; set; }
|
||||||
|
|
||||||
|
public string TypeName
|
||||||
|
=> $"Filter[{this.Index}].{nameof(this.Type)}";
|
||||||
|
|
||||||
public int Index { get; set; }
|
public int Index { get; set; }
|
||||||
|
|
||||||
public string IndexName
|
public string IndexName
|
||||||
@@ -13,10 +21,11 @@
|
|||||||
=> $"Filter[{this.Index}].{nameof(this.Property)}";
|
=> $"Filter[{this.Index}].{nameof(this.Property)}";
|
||||||
|
|
||||||
public string Column { get; set; }
|
public string Column { get; set; }
|
||||||
|
|
||||||
public string ColumnName
|
public string ColumnName
|
||||||
=> $"Filter[{this.Index}].{nameof(this.Column)}";
|
=> $"Filter[{this.Index}].{nameof(this.Column)}";
|
||||||
|
|
||||||
public string Like { get; set; }
|
public virtual string Like { get; set; }
|
||||||
|
|
||||||
public string LikeName
|
public string LikeName
|
||||||
=> $"Filter[{this.Index}].{nameof(this.Like)}";
|
=> $"Filter[{this.Index}].{nameof(this.Like)}";
|
||||||
@@ -28,5 +37,15 @@
|
|||||||
|
|
||||||
public string OrderById
|
public string OrderById
|
||||||
=> $"Filter_{this.Index}_{nameof(this.OrderBy)}";
|
=> $"Filter_{this.Index}_{nameof(this.OrderBy)}";
|
||||||
|
|
||||||
|
public DateTime Von { get; set; }
|
||||||
|
|
||||||
|
public string VonName
|
||||||
|
=> $"Filter[{this.Index}].{nameof(this.Von)}";
|
||||||
|
|
||||||
|
public DateTime Bis { get; set; }
|
||||||
|
|
||||||
|
public string BisName
|
||||||
|
=> $"Filter[{this.Index}].{nameof(this.Bis)}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,29 @@
|
|||||||
Property = memberInfo?.Name,
|
Property = memberInfo?.Name,
|
||||||
OrderBy = orderBy,
|
OrderBy = orderBy,
|
||||||
Index = index,
|
Index = index,
|
||||||
|
Type = "text"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public static HeliumReportFilterProperty DateTime(this HeliumReportItem model, Expression<Func<HeliumReportItem, object>> expression, int index, int orderBy = 0)
|
||||||
|
{
|
||||||
|
var memberInfo = default(MemberInfo);
|
||||||
|
|
||||||
|
if (expression.Body is MemberExpression memberExpression)
|
||||||
|
{
|
||||||
|
memberInfo = memberExpression.Member;
|
||||||
|
}
|
||||||
|
else if (expression.Body is UnaryExpression unaryExpression && unaryExpression.Operand is MemberExpression operandExpression)
|
||||||
|
{
|
||||||
|
memberInfo = operandExpression.Member;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new HeliumReportFilterProperty
|
||||||
|
{
|
||||||
|
Column = memberInfo?.GetCustomAttribute<ColumnAttribute>()?.Name,
|
||||||
|
Property = memberInfo?.Name,
|
||||||
|
OrderBy = orderBy,
|
||||||
|
Index = index,
|
||||||
|
Type = "date"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,5 +15,7 @@ namespace LaaProductionWeb.Services.Models
|
|||||||
public int? FileId { get; set; }
|
public int? FileId { get; set; }
|
||||||
|
|
||||||
public string FileContent { get; set; }
|
public string FileContent { get; set; }
|
||||||
|
|
||||||
|
public string Responsible { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,20 +133,15 @@
|
|||||||
, MAX([APS].[StatusFertigung]) AS [5Metrologicaltesting] -- 4
|
, MAX([APS].[StatusFertigung]) AS [5Metrologicaltesting] -- 4
|
||||||
, [CRRH].[Result] AS [6ConfigComparisonAndRadiotest] -- 5
|
, [CRRH].[Result] AS [6ConfigComparisonAndRadiotest] -- 5
|
||||||
FROM [AuftragPositionSerienNr] AS [APS]
|
FROM [AuftragPositionSerienNr] AS [APS]
|
||||||
LEFT JOIN [Genesis_Meter] AS [GM]
|
LEFT JOIN [Genesis_Meter] AS [GM] ON [GM].[Seriennummer] = [APS].[SerienNr]
|
||||||
ON [GM].[Seriennummer] = [APS].[SerienNr]
|
LEFT JOIN [MapPcbIdToSerialNumber] AS [PCB] ON [PCB].[MapPcbIdToSerialNumber_SerialNumber] = [GM].[Seriennummer]
|
||||||
LEFT JOIN [MapPcbIdToSerialNumber] AS [PCB]
|
LEFT JOIN [Cordonel_Radio_RSSI_History] AS [CRRH] ON [CRRH].[RadioAdress] = [GM].[Adresse] - 10000000000
|
||||||
ON [PCB].[MapPcbIdToSerialNumber_SerialNumber] = [GM].[Seriennummer]
|
AND [CRRH].[IsLast] = 1
|
||||||
LEFT JOIN [Cordonel_Radio_RSSI_History] AS [CRRH]
|
AND [CRRH].[Result] = 1
|
||||||
ON [CRRH].[RadioAdress] = [GM].[Adresse] - 10000000000
|
LEFT JOIN [Druckpruefung] AS [DP] ON [DP].[FabNr] = [PCB].[MapPcbIdToSerialNumber_PcbId]
|
||||||
AND [CRRH].[IsLast] = 1
|
AND [DP].[Dicht] = 1
|
||||||
AND [CRRH].[Result] = 1
|
LEFT JOIN [Cordonel_PressureTest] AS [CPT] ON [CPT].[CordonelPressureTest_PcbId] = [PCB].[MapPcbIdToSerialNumber_PcbId]
|
||||||
LEFT JOIN [Druckpruefung] AS [DP]
|
AND [CPT].[CordonelPressureTest_Valid] = 1
|
||||||
ON [DP].[FabNr] = [PCB].[MapPcbIdToSerialNumber_PcbId]
|
|
||||||
AND [DP].[Dicht] = 1
|
|
||||||
LEFT JOIN [Cordonel_PressureTest] AS [CPT]
|
|
||||||
ON [CPT].[CordonelPressureTest_PcbId] = [PCB].[MapPcbIdToSerialNumber_PcbId]
|
|
||||||
AND [CPT].[CordonelPressureTest_Valid] = 1
|
|
||||||
WHERE [APS].[AuftragNr] = @{nameof(orderId)}
|
WHERE [APS].[AuftragNr] = @{nameof(orderId)}
|
||||||
GROUP BY [APS].[PositionNr]
|
GROUP BY [APS].[PositionNr]
|
||||||
, [APS].[SerienNr]
|
, [APS].[SerienNr]
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
public class ReportService : IReportService
|
public class ReportService : IReportService
|
||||||
{
|
{
|
||||||
@@ -25,8 +26,8 @@
|
|||||||
var orderBy = model.Filter.OrderBy();
|
var orderBy = model.Filter.OrderBy();
|
||||||
|
|
||||||
model.Items = this.dbContext.AsEnumerable($@"
|
model.Items = this.dbContext.AsEnumerable($@"
|
||||||
SELECT [POS].[AuftragNr] AS [AuftragNr] -- 0 Filter
|
SELECT [PT].[CordonelPressureTest_FertigungsAuftragsNr] AS [FertigungNr] -- 0 Filter
|
||||||
, [PT].[CordonelPressureTest_FertigungsAuftragsNr] AS [FertigungNr] -- 1 Filter
|
, [POS].[AuftragNr] AS [AuftragNr] -- 1 Filter
|
||||||
, [POS].[PositionNr] AS [PositionNr] -- 2 Filter
|
, [POS].[PositionNr] AS [PositionNr] -- 2 Filter
|
||||||
, [PCB2SN].[MapPcbIdToSerialNumber_SerialNumber] AS [SerialNr] -- 3
|
, [PCB2SN].[MapPcbIdToSerialNumber_SerialNumber] AS [SerialNr] -- 3
|
||||||
, [ID].[IdentNr] AS [IdentNr] -- 4 Filter
|
, [ID].[IdentNr] AS [IdentNr] -- 4 Filter
|
||||||
@@ -41,8 +42,8 @@
|
|||||||
, [PT_HE].[CordonelPressureTestHe_LeakRate] AS [HeLakeRate] -- 13
|
, [PT_HE].[CordonelPressureTestHe_LeakRate] AS [HeLakeRate] -- 13
|
||||||
, [PT_HE].[CordonelPressureTestHe_TestPressure] AS [HeTestPressure] -- 14
|
, [PT_HE].[CordonelPressureTestHe_TestPressure] AS [HeTestPressure] -- 14
|
||||||
, [PT].[CordonelPressureTest_Valid] AS [IsValid] -- 15 Filter
|
, [PT].[CordonelPressureTest_Valid] AS [IsValid] -- 15 Filter
|
||||||
, [PT].[CordonelPressureTest_Text] AS [Text] -- 16 Filter
|
, [PT].[CordonelPressureTest_Date] AS [TestDate] -- 16 Filter
|
||||||
, [PT].[CordonelPressureTest_Date] AS [TestDate] -- 17 Filter
|
, [PT].[CordonelPressureTest_Text] AS [Text] -- 17 Filter
|
||||||
, [PT_HE].[CordonelPressureTestHe_TesterName] AS [Tester] -- 18
|
, [PT_HE].[CordonelPressureTestHe_TesterName] AS [Tester] -- 18
|
||||||
FROM [Cordonel_PressureTest] AS [PT]
|
FROM [Cordonel_PressureTest] AS [PT]
|
||||||
JOIN [Cordonel_PressureTest_He] AS [PT_HE] ON [PT_HE].[CordonelPressureTestHe_TestID] = [PT].[CordonelPressureTest_Id]
|
JOIN [Cordonel_PressureTest_He] AS [PT_HE] ON [PT_HE].[CordonelPressureTestHe_TestID] = [PT].[CordonelPressureTest_Id]
|
||||||
@@ -67,8 +68,8 @@
|
|||||||
},
|
},
|
||||||
reader => new HeliumReportItem
|
reader => new HeliumReportItem
|
||||||
{
|
{
|
||||||
AuftragNr = reader.GetValue<int>(0),
|
FertigungNr = reader.GetValue<int>(0),
|
||||||
FertigungNr = reader.GetValue<int>(1),
|
AuftragNr = reader.GetValue<int>(1),
|
||||||
PositionNr = reader.GetValue<short>(2),
|
PositionNr = reader.GetValue<short>(2),
|
||||||
SerialNr = reader.GetValue<int>(3),
|
SerialNr = reader.GetValue<int>(3),
|
||||||
IdentNr = reader.GetValue<int>(4),
|
IdentNr = reader.GetValue<int>(4),
|
||||||
@@ -83,10 +84,11 @@
|
|||||||
HeLakeRate = reader.GetString(13),
|
HeLakeRate = reader.GetString(13),
|
||||||
HeTestPressure = reader.GetString(14),
|
HeTestPressure = reader.GetString(14),
|
||||||
IsValid = reader.GetValue<bool>(15),
|
IsValid = reader.GetValue<bool>(15),
|
||||||
Text = reader.GetString(16),
|
TestDate = reader.GetValue<DateTimeOffset>(16),
|
||||||
TestDate = reader.GetValue<DateTimeOffset>(17),
|
Text = reader.GetString(17),
|
||||||
Tester = reader.GetString(18)
|
Tester = reader.GetString(18)
|
||||||
});
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
namespace LaaProductionWeb.Controllers
|
namespace LaaProductionWeb.Controllers
|
||||||
{
|
{
|
||||||
using LaaProductionWeb.App_Infrastructure;
|
|
||||||
using LaaProductionWeb.Services.Interfaces;
|
using LaaProductionWeb.Services.Interfaces;
|
||||||
using LaaProductionWeb.Services.Models;
|
using LaaProductionWeb.Services.Models;
|
||||||
|
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
|
|
||||||
[AllowedRoles("Protocol")]
|
[Authorize]
|
||||||
|
// [AllowedRoles("Protocol")]
|
||||||
public class ProtocolController : Controller
|
public class ProtocolController : Controller
|
||||||
{
|
{
|
||||||
public const string FilePDF = nameof(FilePDF);
|
public const string FilePDF = nameof(FilePDF);
|
||||||
|
|||||||
@@ -4,7 +4,9 @@
|
|||||||
using LaaProductionWeb.Services.Models;
|
using LaaProductionWeb.Services.Models;
|
||||||
|
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
// [AllowedRoles("HeReport")]
|
||||||
public class ReportController : Controller
|
public class ReportController : Controller
|
||||||
{
|
{
|
||||||
private readonly IReportService reportService;
|
private readonly IReportService reportService;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
namespace LaaProductionWeb.Controllers
|
namespace LaaProductionWeb.Controllers
|
||||||
{
|
{
|
||||||
using LaaProductionWeb.App_Infrastructure;
|
|
||||||
using LaaProductionWeb.Services.Interfaces;
|
using LaaProductionWeb.Services.Interfaces;
|
||||||
using LaaProductionWeb.Services.Models;
|
using LaaProductionWeb.Services.Models;
|
||||||
|
|
||||||
@@ -13,7 +12,8 @@
|
|||||||
|
|
||||||
using SystemFile = System.IO.File;
|
using SystemFile = System.IO.File;
|
||||||
|
|
||||||
[AllowedRoles("Shipment")]
|
[Authorize]
|
||||||
|
// [AllowedRoles("Shipment")]
|
||||||
public class ShipmentsController : Controller
|
public class ShipmentsController : Controller
|
||||||
{
|
{
|
||||||
private readonly IShipmentsService shipmentsService;
|
private readonly IShipmentsService shipmentsService;
|
||||||
|
|||||||
@@ -180,6 +180,7 @@
|
|||||||
<Content Include="Views\Report\Index.cshtml" />
|
<Content Include="Views\Report\Index.cshtml" />
|
||||||
<Content Include="Views\Report\Filter.cshtml" />
|
<Content Include="Views\Report\Filter.cshtml" />
|
||||||
<Content Include="Views\Report\Results.cshtml" />
|
<Content Include="Views\Report\Results.cshtml" />
|
||||||
|
<Content Include="Views\Report\DateFilter.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="App_Content\font\fonts\bootstrap-icons.woff" />
|
<Content Include="App_Content\font\fonts\bootstrap-icons.woff" />
|
||||||
|
|||||||
@@ -1,74 +1,144 @@
|
|||||||
@model IEnumerable<LaaProductionWeb.Services.Models.TestStatus>
|
@model IEnumerable<LaaProductionWeb.Services.Models.TestStatus>
|
||||||
|
|
||||||
@{
|
@{
|
||||||
Func<bool?, string> testPassed = testStatus =>
|
Func<bool?, bool, MvcHtmlString> testPassed = (testStatus, nullable) =>
|
||||||
{
|
{
|
||||||
if (testStatus is null)
|
if (testStatus is null && nullable)
|
||||||
{
|
{
|
||||||
return "bi bi-check2 text-secondary opacity-25 fs-3";
|
return new MvcHtmlString("<td class=\"text-center text-success\">OK*</td>");
|
||||||
|
}
|
||||||
|
else if (testStatus is null)
|
||||||
|
{
|
||||||
|
return new MvcHtmlString("<td class=\"text-center text-secondary small\">NULL</td>");
|
||||||
}
|
}
|
||||||
else if (testStatus == false)
|
else if (testStatus == false)
|
||||||
{
|
{
|
||||||
return "bi bi-x text-danger fs-3";
|
return new MvcHtmlString("<td class=\"text-center text-danger\">X</td>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return "bi bi-check2 text-teal fs-3";
|
return new MvcHtmlString("<td class=\"text-center text-success\">OK</td>");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@{
|
||||||
|
|
||||||
|
}
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" class="p-0">
|
<td colspan="2" class="p-0">
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<tr>
|
<tr>
|
||||||
<th class="white-space-nowrap">Pos. No.</th>
|
<th class="white-space-nowrap">Pos.</th>
|
||||||
<th class="white-space-nowrap">Serial No.</th>
|
<th class="white-space-nowrap">Serial No.</th>
|
||||||
<th>Tightness Test</th>
|
<th class="text-center">T1</th>
|
||||||
<th>Pressure and burst test composit transducer</th>
|
<th class="text-center">T2</th>
|
||||||
<th>Metrological testing</th>
|
<th class="text-center">T3</th>
|
||||||
<th>Config comparison and radio test</th>
|
<th class="text-center">T4</th>
|
||||||
</tr>
|
<th class="text-center">T5</th>
|
||||||
<tr>
|
<th class="text-center">T6</th>
|
||||||
<th colspan="2">Acceptance Norms</th>
|
<th class="text-center">T7</th>
|
||||||
<td>Rejected in case of leakage</td>
|
|
||||||
<td>Rejected in case of leakage or breakage</td>
|
|
||||||
<td>
|
|
||||||
Maximum Permissible Error at
|
|
||||||
<br>Q1 < ± 5%
|
|
||||||
<br>Q2 < ± 2%
|
|
||||||
<br>Q3 < ± 2%
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Main functions,
|
|
||||||
<br>LCD display,
|
|
||||||
<br>LED,
|
|
||||||
<br>Radio functions according to specs
|
|
||||||
<br>
|
|
||||||
<br>Parameter readable and according to customer specification
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
@foreach (var item in this.Model)
|
@foreach (var item in this.Model)
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td class="va-middle">@item.PosNr</td>
|
<td class="va-middle">@item.PosNr</td>
|
||||||
<td class="va-middle white-space-nowrap">@item.SerialNr</td>
|
<td class="va-middle white-space-nowrap">@item.SerialNr</td>
|
||||||
<td class="text-center">
|
@testPassed(null, true)
|
||||||
<bi class="@testPassed(item.HeliumTest)"></bi>
|
@testPassed(item.PressureTest, false)
|
||||||
</td>
|
@testPassed(item.HeliumTest, false)
|
||||||
<td class="text-center">
|
@testPassed(null, true)
|
||||||
<bi class="@testPassed(item.PressureTest)"></bi>
|
@testPassed(item.MetroTest, false)
|
||||||
</td>
|
@testPassed(item.RadioTest, false)
|
||||||
<td class="text-center">
|
@testPassed(null, true)
|
||||||
<bi class="@testPassed(item.MetroTest)"></bi>
|
|
||||||
</td>
|
|
||||||
<td class="text-center">
|
|
||||||
<bi class="@testPassed(item.RadioTest)"></bi>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="pt-5 px-0 small">
|
||||||
|
<table class="table table-sm table-bordered border-top text-secondary">
|
||||||
|
<tr>
|
||||||
|
<th>Legend:</th>
|
||||||
|
<th>Component & Operation</th>
|
||||||
|
<th>Quantum of Check</th>
|
||||||
|
<th>Acceptance Norms</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T1</th>
|
||||||
|
<th class="va-middle py-0">Powder coating</th>
|
||||||
|
<td class="py-0">
|
||||||
|
1 piece per quarter<br />
|
||||||
|
1 piece per h
|
||||||
|
</td>
|
||||||
|
<td class="va-middle py-0">
|
||||||
|
Adhesion according to DIN 53151,coating faultless & corrosion free<br />
|
||||||
|
According drawing
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T2</th>
|
||||||
|
<th class="va-middle py-0">Pressure and burst test composit transducer</th>
|
||||||
|
<td class="py-0">
|
||||||
|
First part / batch<br />
|
||||||
|
500 th part / batch<br />
|
||||||
|
Last part / batch
|
||||||
|
</td>
|
||||||
|
<td class="va-middle">Rejected in case of leakage or breakage</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T3</th>
|
||||||
|
<th class="va-middle py-0">Tightness Test</th>
|
||||||
|
<td class="py-0">100%</td>
|
||||||
|
<td class="va-middle">Rejected in case of leakage</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T4</th>
|
||||||
|
<th class="va-middle py-0">Pressure and tightness test</th>
|
||||||
|
<td class="py-0">100% at start of production</td>
|
||||||
|
<td class="va-middle py-0">Rejected in case of leakage or breakage</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T5</th>
|
||||||
|
<th class="va-middle py-0">Metrological testing</th>
|
||||||
|
<td class="py-0">100%</td>
|
||||||
|
<td class="va-middle py-0">
|
||||||
|
Maximum Permissible Error at<br />
|
||||||
|
Q1 < ± 5%<br />
|
||||||
|
Q2 < ± 2%<br />
|
||||||
|
Q3 < ± 2%
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T6</th>
|
||||||
|
<th class="va-middle py-0">Config comparison and radio test</th>
|
||||||
|
<td class="py-0">100%</td>
|
||||||
|
<td class="va-middle py-0">
|
||||||
|
Main functions, LCD display, LED, Radio functions according to specs<br />
|
||||||
|
Parameter readable and according to customer specification
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">T7</th>
|
||||||
|
<th class="py-0">100%</th>
|
||||||
|
<td class="va-middle py-0">Packaging of meter</td>
|
||||||
|
<td class="va-middle py-0">SENSUS-1-924</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">Ok</th>
|
||||||
|
<td class="va-middle py-0" colspan="3">Test passed</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">Ok*</th>
|
||||||
|
<td class="va-middle py-0" colspan="3">Test passed according to the Quantum of Check</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="va-middle py-0">X</th>
|
||||||
|
<td class="va-middle py-0" colspan="3">Test not passed</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -55,8 +55,12 @@
|
|||||||
@this.Html.HiddenFor(x => x.Positions)
|
@this.Html.HiddenFor(x => x.Positions)
|
||||||
<input name="FilePDF" id="FilePDF" type="file" class="d-none" accept="application/pdf" onchange="javascript: this.form.submit();" />
|
<input name="FilePDF" id="FilePDF" type="file" class="d-none" accept="application/pdf" onchange="javascript: this.form.submit();" />
|
||||||
<div class="input-group flex-nowrap mt-3">
|
<div class="input-group flex-nowrap mt-3">
|
||||||
<a class="btn btn-light white-space-nowrap w-100" href="/Protocol/Print?orderId=@this.Model.OrderId" target="_blank"><i class="bi bi-printer me-2"></i> Vorschau</a>
|
<a class="btn btn-light border white-space-nowrap w-100" href="/Protocol/Print?orderId=@this.Model.OrderId" target="_blank">
|
||||||
<label for="FilePDF" class="btn btn-outline-light border text-dark white-space-nowrap w-100"><i class="bi bi-filetype-pdf"></i> Auswählen</label>
|
<i class="bi bi-printer me-2"></i> Vorschau
|
||||||
|
</a>
|
||||||
|
<label for="FilePDF" class="btn btn-outline-light border text-dark white-space-nowrap w-100">
|
||||||
|
<i class="bi bi-filetype-pdf"></i> Auswählen
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
@if (this.TempData.TryGetValue(ProtocolController.FilePDF, out object errorMessage))
|
@if (this.TempData.TryGetValue(ProtocolController.FilePDF, out object errorMessage))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -71,4 +71,24 @@
|
|||||||
{
|
{
|
||||||
this.Html.RenderAction(nameof(ProtocolController.Body), new { orderId = this.Model.OrderId });
|
this.Html.RenderAction(nameof(ProtocolController.Body), new { orderId = this.Model.OrderId });
|
||||||
}
|
}
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row pt-5">
|
||||||
|
<div class="col-4 d-flex flex-column justify-content-end">
|
||||||
|
<label class="small">Datum: @($"{DateTime.Now:dd.MM.yyyy}")</label>
|
||||||
|
<hr class="mt-0" />
|
||||||
|
</div>
|
||||||
|
<div class="col-4 d-flex flex-column justify-content-end">
|
||||||
|
<div class="input-group align-items-end">
|
||||||
|
<label class="small">Name: </label>
|
||||||
|
<input class="form-control border-0 rounded-0" />
|
||||||
|
</div>
|
||||||
|
<hr class="mt-0" />
|
||||||
|
</div>
|
||||||
|
<div class="col-4 d-flex flex-column justify-content-end">
|
||||||
|
<label class="small">Unterschrift: </label>
|
||||||
|
<hr class="mt-0" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
@model LaaProductionWeb.Services.Models.HeliumReportFilterProperty
|
||||||
|
|
||||||
|
@{
|
||||||
|
Func<bool, string> isChecked = x => x ? "checked" : string.Empty;
|
||||||
|
Func<bool, string> bgColor = x => !x ? "bg-light" : string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
<input type="hidden" name="@this.Model.IndexName" value="@this.Model.Index" />
|
||||||
|
<input type="hidden" name="@this.Model.ColumnName" value="@this.Model.Column" />
|
||||||
|
<input type="hidden" name="@this.Model.PropertyName" value="@this.Model.Property" />
|
||||||
|
<input type="hidden" name="@this.Model.TypeName" value="@this.Model.Type" />
|
||||||
|
|
||||||
|
<div class="input-group flex-nowrap justify-content-center">
|
||||||
|
<input name="@this.Model.VonName" type="date" class="form-control form-control-sm mb-1" value="@($"{this.Model.Von:MM/dd/yyyy}")" />
|
||||||
|
<input name="@this.Model.BisName" type="date" class="form-control form-control-sm mb-1" value="@($"{this.Model.Bis:MM/dd/yyyy}")" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-group flex-nowrap justify-content-center">
|
||||||
|
<input id="@(this.Model.OrderById)_1" name="@this.Model.OrderByName" type="radio" value="1" @isChecked(this.Model.OrderBy == 1) class="d-none" />
|
||||||
|
<label for="@(this.Model.OrderById)_1" class="form-control form-control-sm text-center text-secondary border-light @bgColor(this.Model.OrderBy == 1) cursor-pointer">
|
||||||
|
<i class="bi bi-chevron-up"></i>
|
||||||
|
</label>
|
||||||
|
<input id="@(this.Model.OrderById)_0" name="@this.Model.OrderByName" type="radio" value="0" @isChecked(this.Model.OrderBy == 0) class="d-none" />
|
||||||
|
<label for="@(this.Model.OrderById)_0" class="form-control form-control-sm text-center text-secondary border-light @bgColor(this.Model.OrderBy == 0) cursor-pointer">
|
||||||
|
<i class="bi bi-dash"></i>
|
||||||
|
</label>
|
||||||
|
<input id="@(this.Model.OrderById)__1" name="@this.Model.OrderByName" type="radio" value="-1" @isChecked(this.Model.OrderBy == -1) class="d-none" />
|
||||||
|
<label for="@(this.Model.OrderById)__1" class="form-control form-control-sm text-center text-secondary border-light @bgColor(this.Model.OrderBy == -1) cursor-pointer">
|
||||||
|
<i class="bi bi-chevron-down"></i>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
@model LaaProductionWeb.Services.Models.HeliumReportFilterProperty
|
@model LaaProductionWeb.Services.Models.HeliumReportFilterProperty
|
||||||
|
|
||||||
@{
|
@{
|
||||||
Func<bool, string> isChecked = x => x ? "checked" : string.Empty;
|
Func<bool, string> isChecked = x => x ? "checked" : string.Empty;
|
||||||
Func<bool, string> bgColor = x => !x ? "bg-light" : string.Empty;
|
Func<bool, string> bgColor = x => !x ? "bg-light" : string.Empty;
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
<input type="hidden" name="@this.Model.IndexName" value="@this.Model.Index" />
|
<input type="hidden" name="@this.Model.IndexName" value="@this.Model.Index" />
|
||||||
<input type="hidden" name="@this.Model.ColumnName" value="@this.Model.Column" />
|
<input type="hidden" name="@this.Model.ColumnName" value="@this.Model.Column" />
|
||||||
<input type="hidden" name="@this.Model.PropertyName" value="@this.Model.Property" />
|
<input type="hidden" name="@this.Model.PropertyName" value="@this.Model.Property" />
|
||||||
|
<input type="hidden" name="@this.Model.TypeName" value="@this.Model.Type" />
|
||||||
<input name="@this.Model.LikeName" class="form-control form-control-sm mb-1" autocomplete="off" value="@this.Model.Like" />
|
<input name="@this.Model.LikeName" class="form-control form-control-sm mb-1" autocomplete="off" value="@this.Model.Like" />
|
||||||
<div class="input-group flex-nowrap justify-content-center">
|
<div class="input-group flex-nowrap justify-content-center">
|
||||||
<input id="@(this.Model.OrderById)_1" name="@this.Model.OrderByName" type="radio" value="1" @isChecked(this.Model.OrderBy == 1) class="d-none" />
|
<input id="@(this.Model.OrderById)_1" name="@this.Model.OrderByName" type="radio" value="1" @isChecked(this.Model.OrderBy == 1) class="d-none" />
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
<table class="table table-sm table-bordered mb-0">
|
<table class="table table-sm table-bordered mb-0">
|
||||||
<thead class="bg-light">
|
<thead class="bg-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.AuftragNr)</th>
|
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.FertigungNr)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.FertigungNr)</th>
|
||||||
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.AuftragNr)</th>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.PositionNr)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.PositionNr)</th>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.SerialNr)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.SerialNr)</th>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.IdentNr)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.IdentNr)</th>
|
||||||
@@ -23,12 +23,19 @@
|
|||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.IsValid)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.IsValid)</th>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.TestDate)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.TestDate)</th>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.Tester)</th>
|
<th class="text-nowrap p-2">@this.Model.Display(x => x.Tester)</th>
|
||||||
<th class="text-nowrap p-2">@this.Model.Display(x => x.Text)</th>
|
<th class="p-2">@this.Model.Display(x => x.Text)</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@foreach (var filter in this.Model.Filter)
|
@foreach (var filter in this.Model.Filter)
|
||||||
{
|
{
|
||||||
<td>@this.Html.Partial("Filter", filter)</td>
|
if (filter.Type == "date")
|
||||||
|
{
|
||||||
|
<td>@this.Html.Partial("DateFilter", filter)</td>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<td>@this.Html.Partial("Filter", filter)</td>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -36,8 +43,8 @@
|
|||||||
@foreach (var item in this.Model.Items)
|
@foreach (var item in this.Model.Items)
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-nowrap p-2">@item.AuftragNr</td>
|
|
||||||
<td class="text-nowrap p-2">@item.FertigungNr</td>
|
<td class="text-nowrap p-2">@item.FertigungNr</td>
|
||||||
|
<td class="text-nowrap p-2">@item.AuftragNr</td>
|
||||||
<td class="text-nowrap p-2">@item.PositionNr</td>
|
<td class="text-nowrap p-2">@item.PositionNr</td>
|
||||||
<td class="text-nowrap p-2">@item.SerialNr</td>
|
<td class="text-nowrap p-2">@item.SerialNr</td>
|
||||||
<td class="text-nowrap p-2">@item.IdentNr</td>
|
<td class="text-nowrap p-2">@item.IdentNr</td>
|
||||||
@@ -55,10 +62,10 @@
|
|||||||
<td class="text-nowrap p-2">@item.Temperatur</td>
|
<td class="text-nowrap p-2">@item.Temperatur</td>
|
||||||
<td class="text-nowrap p-2">@item.HeLakeRate</td>
|
<td class="text-nowrap p-2">@item.HeLakeRate</td>
|
||||||
<td class="text-nowrap p-2">@item.HeTestPressure</td>
|
<td class="text-nowrap p-2">@item.HeTestPressure</td>
|
||||||
<td class="text-nowrap p-2"><i class="bi bi-bold @(@item.IsValid ? "bi-check text-success" : "bi-x text-danger")"></i></td>
|
<td class="text-nowrap p-2"><i class="bi bi-bold @(item.IsValid ? "bi-check text-success" : "bi-x text-danger")"></i></td>
|
||||||
<td class="text-nowrap p-2">@($"{item.TestDate:dd.MM.yyyy}")</td>
|
<td class="text-nowrap p-2">@($"{item.TestDate:dd.MM.yyyy}")</td>
|
||||||
<td class="text-nowrap p-2">@item.Tester</td>
|
<td class="text-nowrap p-2">@item.Tester</td>
|
||||||
<td class="text-nowrap p-2">@item.Text</td>
|
<td class="p-2">@item.Text</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
Reference in New Issue
Block a user