Updated solution to support merging of ABORT_ALARM and INTRUSIVE_MAINT
orders
This commit is contained in:
@ -2031,16 +2031,35 @@ Service CreateReactModeChange(UserID, ReactNo, Mode, ModeSubCat, ModeText, Force
|
||||
If ErrorMsg EQ '' then
|
||||
AbortAlarmFeatureFlag = Xlate('FEATURE_FLAGS', 'NICA_ABORT_ALARM', FEATURE_FLAGS.ENABLED$, 'X')
|
||||
If AbortAlarmFeatureFlag EQ True$ then
|
||||
If IntrMaintFeatureFlag EQ True$ then
|
||||
AbortAlarmFromIntrusiveMaintRequired = Nica_Orders_Services('AbortAlarmFromIntrusiveMaintRequired', ReactNo)
|
||||
ActiveIntrusiveMaintChecklists = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'INTRUSIVE_MAINT')
|
||||
IntrusiveMaintChecklistActive = (ActiveIntrusiveMaintChecklists NE '')
|
||||
end else
|
||||
AbortAlarmFromIntrusiveMaintRequired = False$
|
||||
IntrusiveMaintChecklistActive = False$
|
||||
end
|
||||
ModeSubCatFlowId = Xlate('REACT_PROB_CAT', ModeSubCatId, REACT_PROB_CAT_ABORT_ALARM_FLOW_ID$, 'X')
|
||||
ModeSubCatRespLvl = Xlate('REACT_PROB_CAT', ModeSubCatId, REACT_PROB_CAT_ABORT_ALARM_RESPONSE_LEVEL$, 'X')
|
||||
AbortAlarmComp = Xlate('REACTOR', ReactNo, REACTOR_ABORT_ALARM_COMPLETE$, 'X')
|
||||
ActiveAbortAlarmOrders = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'ABORT_ALARM')
|
||||
AbortAlarmOrderActive = (ActiveAbortAlarmOrders NE '')
|
||||
ReactorType = Xlate('REACTOR', ReactNo, REACTOR_REACT_TYPE$, 'X')
|
||||
ChecklistIds = Nica_Orders_Services('GetFlowChecklistIds', ModeSubCatFlowId, 'ABORT_ALARM', ReactorType)
|
||||
CreateAbortAlarmOrder = False$
|
||||
Intrusive = False$
|
||||
|
||||
Begin Case
|
||||
Case ( AbortAlarmOrderActive and (SelE10State _EQC 'Productive') )
|
||||
ErrorMsg = "An ABORT/ALARM Checklist is active for this reactor and must be completed or overridden in order to change to a productive state."
|
||||
|
||||
Case ( AbortAlarmOrderActive and IndexC(ModeSubCat, 'ABORT/ALARM', 1) and (ModeSubCatFlowId NE '') )
|
||||
Case ( AbortAlarmFromIntrusiveMaintRequired and IndexC(ModeSubCat, 'ABORT/ALARM', 1) and (ModeSubCatFlowId NE '') and (ChecklistIds NE '') )
|
||||
// INTRUSIVE_MAINT FIRST_PRODUCT_RUN_THICK or FIRST_PRODUCT_RUN_HGCV checklist started and
|
||||
// ABORT/ALARM mode entered, so create an ABORT/ALARM order to contain product in reactor.
|
||||
CreateAbortAlarmOrder = True$
|
||||
Intrusive = True$
|
||||
|
||||
Case ( Not(IntrusiveMaintChecklistActive) and AbortAlarmOrderActive and IndexC(ModeSubCat, 'ABORT/ALARM', 1) and (ModeSubCatFlowId NE '') )
|
||||
// If there is an active ABORT/ALARM NICA order, then we need to check if the new sub mode is different than the sub mode entered when the ABORT/ALARM
|
||||
// NICA order was created and is of a higher response level or the new mode is WAITING_FOR_OPERATOR and the sub mode has changed. This means the maintenance
|
||||
// team deemed the true ABORT/ALARM root cause was different than the cause the operators selected.
|
||||
@ -2052,26 +2071,26 @@ Service CreateReactModeChange(UserID, ReactNo, Mode, ModeSubCat, ModeText, Force
|
||||
Next ActiveAbortAlarmRespLvl
|
||||
If ( (Mode _EQC 'WAITING_FOR_OPERATOR') and (ModeSubCatFlowId NE ActiveAbortAlarmFlowIds) ) |
|
||||
or ( (ModeSubCatFlowId NE ActiveAbortAlarmFlowIds) and (ModeSubCatRespLvl GT MaxActiveRespLvl) ) then
|
||||
ReactorType = Xlate('REACTOR', ReactNo, REACTOR_REACT_TYPE$, 'X')
|
||||
ChecklistIds = Nica_Orders_Services('GetFlowChecklistIds', ModeSubCatFlowId, 'ABORT_ALARM', ReactorType)
|
||||
If ChecklistIds NE '' then
|
||||
Nica_Orders_Services('CreateNewOrder', 'REACTOR', ReactNo, 'ABORT_ALARM', ModeSubCatFlowId, ModeSubCatRespLvl, ChecklistIds)
|
||||
RlComment = 'ABORT/ALARM initiated for flow ':ModeSubCatFlowId:'.'
|
||||
CreateAbortAlarmOrder = True$
|
||||
end
|
||||
end
|
||||
|
||||
Case ( Not(AbortAlarmComp) and Not(AbortAlarmOrderActive) and IndexC(ModeSubCat, 'ABORT/ALARM', 1) and (ModeSubCatFlowId NE '') )
|
||||
ReactorType = Xlate('REACTOR', ReactNo, REACTOR_REACT_TYPE$, 'X')
|
||||
ChecklistIds = Nica_Orders_Services('GetFlowChecklistIds', ModeSubCatFlowId, 'ABORT_ALARM', ReactorType)
|
||||
If ChecklistIds NE '' then
|
||||
Nica_Orders_Services('CreateNewOrder', 'REACTOR', ReactNo, 'ABORT_ALARM', ModeSubCatFlowId, ModeSubCatRespLvl, ChecklistIds)
|
||||
RlComment = 'ABORT/ALARM initiated for flow ':ModeSubCatFlowId:'.'
|
||||
end
|
||||
Case ( Not(IntrusiveMaintChecklistActive) and Not(AbortAlarmComp) and Not(AbortAlarmOrderActive) and IndexC(ModeSubCat, 'ABORT/ALARM', 1) and (ModeSubCatFlowId NE '') and (ChecklistIds NE '') )
|
||||
// Typical ABORT/ALARM case
|
||||
CreateAbortAlarmOrder = True$
|
||||
|
||||
Case Otherwise$
|
||||
// Don't create an ABORT/ALARM NICA order
|
||||
Null
|
||||
|
||||
End Case
|
||||
|
||||
If CreateAbortAlarmOrder then
|
||||
Nica_Orders_Services('CreateNewOrder', 'REACTOR', ReactNo, 'ABORT_ALARM', ModeSubCatFlowId, ModeSubCatRespLvl, ChecklistIds, Intrusive)
|
||||
RlComment = 'ABORT/ALARM initiated for flow ':ModeSubCatFlowId:'.'
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user