Alarm trigger with NICA_ORDERS table

solution tested and ready for deployment

updated SRP_Git_Services to handle creating local copies of inherited entities

updated HgCV OCAP order trigger to also look for active prove-in orders

moved error services common into sysprog to avoid compilation issues
This commit is contained in:
Infineon\StieberD
2024-12-12 13:24:48 -07:00
parent 3cd56295dc
commit ab8f9d3c24
24 changed files with 3167 additions and 1571 deletions

View File

@ -43,6 +43,7 @@ Function Metrology_Services(@Service, @Params)
09/18/18 djs Added code within the ImportTencorData service to post wafer image pdfs to a staging table
where they will be stored locally on the App server.
09/11/19 fdr Add new service "ImportStratusData"
12/05/24 djs Updated GetIQSViolations service to store reactor violations in the respective reactor record.
***********************************************************************************************************************/
@ -67,6 +68,7 @@ $insert WO_MAT_EQUATES
$Insert NOTIFICATION_EQUATES
$Insert RLIST_EQUATES
$Insert WM_OUT_EQUATES
$Insert IQS_VIOL_DATA_EQUATES
Common /MetrologyServices/ MachineType@, RDSNo@
@ -91,7 +93,7 @@ Equ Comma$ to ','
Declare subroutine SRP_Stopwatch, Error_Services, obj_Tables, Metrology_Services, obj_RDS_Test, SRP_JSON
Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Set_Status, QA_Services, obj_Notes
Declare subroutine Logging_Services, SRP_Send_Mail, SRP_Run_Command, PM_Services, Httpclient_Services
Declare subroutine Tool_Services, Mona_Services
Declare subroutine Tool_Services, Mona_Services, Reactor_Services
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services, UCase
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Min, Max
Declare function QA_Services, SRP_Join_Arrays, Get_Status, Obj_Clean_Insp, Datetime, SRP_Datetime
@ -2039,6 +2041,7 @@ end service
Service GetCalculatedLayer(RDSKeyID, Machine, RunDataZone, WoIsEpiPro, ScannedLayer)
CalculatedLayer = ''
If (RDSKeyID NE '') AND (Machine NE '') then
@ -2223,7 +2226,9 @@ Service RemoveOldMetrology()
end service
Service ImportBioRadEPPFQAData(RunData, FileName)
Timestamp = RunData<2>
WMOKeyID = RunData<6>
Swap '.' with '*' in WMOKeyID
@ -2303,8 +2308,10 @@ Service ImportBioRadEPPFQAData(RunData, FileName)
end else
Metrology_Services('LogResults', RDSNo@, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
end service
//----------------------------------------------------------------------------------------------------------------------
// CleanRepository
//
@ -2349,61 +2356,23 @@ Service MonitorQueue(NumFiles)
// Enable manual entry restriction - check current status to avoid unnecessary writes.
CurrLockStatus = Database_Services('ReadDataRow', 'APP_INFO', 'ROTR_DATA_ENTRY_LOCK')
If CurrLockStatus EQ False$ then
Database_Services('WriteDataRow', 'APP_INFO', 'ROTR_DATA_ENTRY_LOCK', True$)
// Add message to OI Admins' Inbox
* OIAdmins = Xlate('SEC_GROUPS', 'OI_ADMIN', 'USER', 'X')
* Recipients = OIAdmins
* SentFrom = 'ADMIN_OI'
* Subject = 'ROTR Manual Entry Restriction Re-enabled'
* Message = 'Metrology run data queue currently has ':CurrFileCount:' files. ' |
* : 'ROTR manual entry lock has been re-enabled.'
* AttachWindow = ''
* AttachKey = ''
* SendToGroup = ''
* Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
* Set_Status(0)
* obj_Notes('Create',Parms)
*
Database_Services('WriteDataRow', 'APP_INFO', 'ROTR_DATA_ENTRY_LOCK', True$)
end
end else
// Lift manual entry restriction - check current status to avoid unnecessary writes.
CurrLockStatus = Database_Services('ReadDataRow', 'APP_INFO', 'ROTR_DATA_ENTRY_LOCK')
If CurrLockStatus EQ True$ then
Database_Services('WriteDataRow', 'APP_INFO', 'ROTR_DATA_ENTRY_LOCK', False$)
// Add message to OI Admins' Inbox
* OIAdmins = Xlate('SEC_GROUPS', 'OI_ADMIN', 'USER', 'X')
* Recipients = OIAdmins
* SentFrom = 'ADMIN_OI'
* Subject = 'ROTR Manual Entry Restriction Disabled'
* Message = 'Metrology run data queue currently has ':CurrFileCount:' files. ' |
* : 'ROTR manual entry lock has been temporarily disabled.'
* AttachWindow = ''
* AttachKey = ''
* SendToGroup = ''
* Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
* Set_Status(0)
* obj_Notes('Create',Parms)
end
end
end service
Service GetIQSViolations()
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, ServiceKeyID then
Equ ViolReactorCol$ To 1
Equ ViolTestCol$ To 2
Equ ViolUSLCol$ To 3
Equ ViolTARCol$ To 4
Equ ViolLSLCol$ To 5
Equ ViolLastEntryCol$ To 6
Equ ViolLastAlarmCol$ To 7
Equ ViolAlarmCol$ To 8
Equ ViolSubGroupCol$ To 9
Equ ViolMeanCol$ To 10
Equ LastWriteTimeCol$ To 11
Response = 0
ParsedIQSData = ''
Pass = 1
@ -2445,21 +2414,21 @@ Service GetIQSViolations()
//Delete useuless Entire Database column
FilteredData = Delete(FilteredData, i,1,0)
ParsedIQSData<ViolReactorCol$, i> = FilteredData<i, ViolReactorCol$>
ParsedIQSData<ViolTestCol$, i> = FilteredData<i, ViolTestCol$>
ParsedIQSData<ViolUSLCol$, i> = FilteredData<i, ViolUSLCol$>
ParsedIQSData<ViolTARCol$, i> = FilteredData<i, ViolTARCol$>
ParsedIQSData<ViolLSLCol$, i> = FilteredData<i, ViolLSLCol$>
ParsedIQSData<ViolLastEntryCol$, i> = FilteredData<i, ViolLastEntryCol$>
ParsedIQSData<ViolLastAlarmCol$, i> = FilteredData<i, ViolLastAlarmCol$>
ParsedIQSData<IQS_VIOL_DATA.REACTOR$, i> = FilteredData<i, IQS_VIOL_DATA.REACTOR$>
ParsedIQSData<IQS_VIOL_DATA.TEST$, i> = FilteredData<i, IQS_VIOL_DATA.TEST$>
ParsedIQSData<IQS_VIOL_DATA.USL$, i> = FilteredData<i, IQS_VIOL_DATA.USL$>
ParsedIQSData<IQS_VIOL_DATA.TAR$, i> = FilteredData<i, IQS_VIOL_DATA.TAR$>
ParsedIQSData<IQS_VIOL_DATA.LSL$, i> = FilteredData<i, IQS_VIOL_DATA.LSL$>
ParsedIQSData<IQS_VIOL_DATA.LAST_ENTRY$, i> = FilteredData<i, IQS_VIOL_DATA.LAST_ENTRY$>
ParsedIQSData<IQS_VIOL_DATA.LAST_ALARM$, i> = FilteredData<i, IQS_VIOL_DATA.LAST_ALARM$>
swap '&gt;' with '>' in FilteredData
swap '&lt;' with '<' in FilteredData
ParsedIQSData<ViolAlarmCol$, i> = FilteredData<i, ViolAlarmCol$>
ParsedIQSData<ViolSubGroupCol$, i> = FilteredData<i, ViolSubGroupCol$>
ParsedIQSData<ViolMeanCol$, i> = FilteredData<i, ViolMeanCol$>
ParsedIQSData<IQS_VIOL_DATA.ALARM$, i> = FilteredData<i, IQS_VIOL_DATA.ALARM$>
ParsedIQSData<IQS_VIOL_DATA.SUBGROUPS$, i> = FilteredData<i, IQS_VIOL_DATA.SUBGROUPS$>
ParsedIQSData<IQS_VIOL_DATA.MEAN$, i> = FilteredData<i, IQS_VIOL_DATA.MEAN$>
Next i
LastWriteTime = IConv(PublishDate, 'DT')
ParsedIQSData<LastWriteTimeCol$> = LastWriteTime
LastWriteTime = IConv(PublishDate, 'DT')
ParsedIQSData<IQS_VIOL_DATA.LAST_WRITE_TIME$> = LastWriteTime
Database_Services('WriteDataRow', 'CONFIG', 'IQS_VIOL_DATA', ParsedIQSData, True$, False$, True$)
//Send status of last write time
@ -2469,8 +2438,11 @@ Service GetIQSViolations()
Mona_Services('SendBufferedStatus', 'IQS_VIOLATION_DATA', 'LastDataTimestamp', 'OK')
end
Reactor_Services('UpdateReactorIQSViolations')
Unlock hSysLists, ServiceKeyID else Null
end
end service
Service ScanRecipeMatchesRdsTestSpecThickMrecipe(RdsNo, RecipeLayer, RecipeInScan, RdsTestKeysFromRdsLayer, Zone='')
@ -2555,6 +2527,7 @@ Service ScanNumDataPointsMatchesRdsTestSpecThickMPattern(RdsNo, RecipeLayer, Sca
Response = MatchFound
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -3015,5 +2988,3 @@ LoadRunDataToDatabase:
return