SharedDatabase entities/mappings changes, StepRecord added, RR.Code1,2,3,4, etc. Workplace ver. 3.1.14

This commit is contained in:
Milan Hanajik
2022-01-10 07:27:18 +01:00
parent c75e3d08d3
commit a6ba6e26b2
30 changed files with 446 additions and 1424 deletions
+24 -118
View File
@@ -298,15 +298,15 @@ namespace TBF.Rig.Output.DB.ProductionTracing
try
{
var refRecords = session.QueryOver<ReferenceRecord>()
.Where(x => (x.POrder == order))
.Where(x => (x.POName == order.POName))
.List();
refRecords.Reverse();
if (dfltOrder != null && dfltWFlow != null)
{
var moreRecords = session.QueryOver<ReferenceRecord>()
.Where(x => (x.POrder == dfltOrder))
.And(x => (x.Workflow == dfltWFlow))
.Where(x => (x.POName == dfltOrder.POName))
.And(x => (x.Workflow == dfltWFlow.Name))
.List();
for (int i = moreRecords.Count - 1; i >= 0; i--) refRecords.Add(moreRecords[i]);
}
@@ -333,7 +333,7 @@ namespace TBF.Rig.Output.DB.ProductionTracing
{
var records = session.QueryOver<Record>()
.JoinQueryOver<ReferenceRecord>(rec => rec.ReferenceRecord)
.Where(rr => rr.POrder.Id == order.Id)
.Where(rr => rr.POName == order.POName)
.List();
records.Reverse();
@@ -341,8 +341,8 @@ namespace TBF.Rig.Output.DB.ProductionTracing
{
var moreRecords = session.QueryOver<Record>()
.JoinQueryOver<ReferenceRecord>(rec => rec.ReferenceRecord)
.Where(rr => (rr.POrder.Id == dfltOrder.Id))
.And(rr => (rr.Workflow.Id == dfltWFlow.Id))
.Where(rr => (rr.POName == dfltOrder.POName))
.And(rr => (rr.Workflow == dfltWFlow.Name))
.List();
for (int i = moreRecords.Count - 1; i >= 0; i--) records.Add(moreRecords[i]);
}
@@ -488,33 +488,16 @@ namespace TBF.Rig.Output.DB.ProductionTracing
bool isAtLeastOneNOK = false;
using (ISession session = SessionFactory.OpenSession())
{
var cOrders = session.QueryOver<OrderInfo>()
.Where(x => x.POName == sampleWM.PurchaseOrder)
.And(x => (x.POState == (sbyte)OrderState.New || x.POState == (sbyte)OrderState.Active))
.List();
if (cOrders.Count < 1)
for (int i = 0; i < waterMeters.Count; i++)
{
cOrders = session.QueryOver<OrderInfo>()
.Where(x => x.POName == "0000001")
.List();
}
Results.Entities.WaterMeter wm = waterMeters[i];
if (cOrders.Count == 1)
{
currentOrder = cOrders[0];
for (int i = 0; i < waterMeters.Count; i++)
if ((wm != null) && !wm.Disabled)
{
Results.Entities.WaterMeter wm = waterMeters[i];
if ((wm != null) && !wm.Disabled)
CheckPreviousRecordOfSingleWM(session, wm);
if (wm.LastRecordIsNok)
{
CheckPreviousRecordOfSingleWM(session, wm, 1);
if (wm.LastRecordIsNok)
{
isAtLeastOneNOK = true;
}
isAtLeastOneNOK = true;
}
}
}
@@ -526,7 +509,7 @@ namespace TBF.Rig.Output.DB.ProductionTracing
return retVal;
}
Retv CheckPreviousRecordOfSingleWM(ISession session, Results.Entities.WaterMeter wm, int sessionId)
Retv CheckPreviousRecordOfSingleWM(ISession session, Results.Entities.WaterMeter wm)
{
if (string.IsNullOrEmpty(wm.SerialNr))
{
@@ -536,100 +519,23 @@ namespace TBF.Rig.Output.DB.ProductionTracing
return Retv.OK;
}
///
/// Get all already existing reference records with Code == wm.SerialNr, refRecords[0] will be the most recent one
///
ReferenceRecord refRecord = null;
Workstep workstep = null;
ProjectionList projections = Projections.ProjectionList();
projections.Add(Projections.Property(() => refRecord.Id)); /// rslt[0] = reference record ID
projections.Add(Projections.Property(() => workstep.Id)); /// rslt[1] = workstep ID
projections.Add(Projections.Property(() => refRecord.Workflow.Id)); /// rslt[2] = process ID
projections.Add(Projections.Property(() => refRecord.TimeStamp)); /// rslt[3] = reference record time stamp
///
/// Get all reference records with Code == SerialNr from all worksteps different from 'Test_bench'
///
IList<object[]> results = session.QueryOver<ReferenceRecord>(() => refRecord)
.Where(rr => (rr.Code == wm.SerialNr))
.JoinQueryOver<Workstep>(rr => rr.Workstep, () => workstep)
.And(ws => (ws.Name != WorkstepName))
.Select(projections)
.List<object[]>();
var refRecords = session.QueryOver<ReferenceRecord>()
.Where(rr => (rr.Code1 == wm.SerialNr))
.List();
if (results.Count == 0)
if (refRecords.Count == 0)
{
/// No records found
wm.ProcessId = 0;
wm.LastRecordIsNok = true; /// NOK
///
return Retv.OK;
}
///
/// Get processId of the last record
///
int processId = 0;
DateTime lastTimeStamp = DateTime.MinValue;
foreach (var rslt in results)
{
if (DateTime.Compare((DateTime)rslt[3], lastTimeStamp) > 0)
{
lastTimeStamp = (DateTime)rslt[3];
processId = (int)rslt[2];
}
}
if (processId == 0) return Retv.Error; /// This should never happen
if ((currentWorkflow == null) || (currentWorkflow.Id != processId))
{
///
/// Process changed ==> update currentProcess / currentWorkstep / verifiedWorkstep / verifiedPart / verifyReferencePart
///
var processes = session.QueryOver<Process>()
.Where(p => (p.Id == processId))
.List();
if (processes.Count != 1) return Retv.Error;
IList<Workstep> worksteps = session.QueryOver<Workstep>()
.Where(ws => (ws.Workflow == processes[0]))
.And( ws => (ws.Name == WorkstepName))
.List();
if (worksteps.Count != 1) return Retv.Error;
SharedDatabase.ScanVerificationInfo info;
///
if (null == (info = SharedDatabase.TracingDB.AnalyzeProcess(session, processes[0], worksteps[0])))
{
return Retv.Error; /// Unable to
}
///
currentWorkflow = processes[0];
currentWorkstep = worksteps[0];
verifiedWorkstep = info.Workstep;
verifiedPart = info.Part;
verifyReferencePart = info.VerifyReferencePart;
}
wm.ProcessId = currentWorkflow.Id;
wm.LastRecordIsNok = true; /// NOK (=default if no matching record found)
foreach (var rslt in results)
{
if ((verifiedWorkstep.Id == (int)rslt[1]) && (processId == (int)rslt[2]))
{
/// This record fits verification requirements
wm.LastRecordIsNok = false; /// OK
break;
}
}
wm.ProcessId = 0;
wm.LastRecordIsNok = false; /// NOK (=default if no matching record found)
return Retv.OK;
}
@@ -724,11 +630,11 @@ namespace TBF.Rig.Output.DB.ProductionTracing
/// <param name="wm">Watermeter entity</param>
void SaveSingleWM2DB(ISession session, OrderInfo order, Results.Entities.WaterMeter wm, Process workflow, Workstep workstep)
{
session.SaveOrUpdate(new ReferenceRecord(order, workflow, workstep,
wm.SerialNr,
GlobalData.CurrentUser.UserName,
workplace,
wm.Passed ? 0 : 1));
//session.SaveOrUpdate(new ReferenceRecord(order, workflow, workstep,
// wm.SerialNr,
// GlobalData.CurrentUser.UserName,
// workplace,
// wm.Passed ? 0 : 1));
}
}
}