SharedDatabase entities/mappings changes, StepRecord added, RR.Code1,2,3,4, etc. Workplace ver. 3.1.14
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user