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:
565
LSL2/STPROC/NICA_ORDERS_SERVICES.txt
Normal file
565
LSL2/STPROC/NICA_ORDERS_SERVICES.txt
Normal file
@ -0,0 +1,565 @@
|
||||
Compile function Nica_Orders_Services(@Service, @Params)
|
||||
/***********************************************************************************************************************
|
||||
|
||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
||||
permission from Infineon Technologies.
|
||||
|
||||
Name : Nica_Orders_Services
|
||||
|
||||
Description : Handler program for all module related services.
|
||||
|
||||
Notes : The generic parameters should contain all the necessary information to process the services. Often
|
||||
this will be information like the data Record and Key ID.
|
||||
|
||||
Parameters :
|
||||
Service [in] -- Name of the service being requested
|
||||
Param1-10 [in/out] -- Additional request parameter holders
|
||||
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
||||
|
||||
History : (Date, Initials, Notes)
|
||||
12/05/24 djs Original programmer.
|
||||
|
||||
***********************************************************************************************************************/
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
$Insert APP_INSERTS
|
||||
$Insert SERVICE_SETUP
|
||||
$Insert REACTOR_EQUATES
|
||||
$Insert REACTOR_LOG_EQUATES
|
||||
$Insert NICA_ORDERS_EQUATES
|
||||
|
||||
Declare function Environment_Services, Database_Services, Error_Services, Logging_Services, Nica_Orders_Services
|
||||
Declare function Httpclient_Services, SRP_JSON
|
||||
Declare subroutine Error_Services, Btree.Extract, Database_Services, Logging_Services, Nica_Orders_Services, Delay
|
||||
Declare subroutine Httpclient_Services, SRP_JSON, Mona_Services, Service_Services
|
||||
|
||||
Machine = Environment_Services('GetServer')
|
||||
LogDate = Oconv(Date(), 'D4/')
|
||||
LogTime = Oconv(Time(), 'MTS')
|
||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||
|
||||
GoToService
|
||||
|
||||
Return Response or ""
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Service Parameter Options
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Options BOOLEAN = True$, False$
|
||||
Options ENTITY_TYPES = 'REACTOR','REACTOR_LOG'
|
||||
Options ORDER_TYPES = 'INTRUSIVE_MAINT','CHANGEOVER','INITIATE_IDLE','IDLE','ASM_HTR_TUBE_CHANGE','ASM_HTR_ANNUAL_PM','ASM_HTR_SEMIANNUAL_PM','ASM_HTR_FIVE_AND_TEN_YEAR_PM','IQS_HGCV_ALARM'
|
||||
Options ORDER_STATUSES = 'new','creating','not-started','in-progress','cancelled','done'
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SERVICES
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Service GetOrderIds(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES, OrderStatus=ORDER_STATUSES, IsComplete=BOOLEAN)
|
||||
|
||||
OrderKeys = ''
|
||||
ErrorMsg = ''
|
||||
If ( (EntityType NE '') or (EntityID NE '') or (OrderType NE '') or (OrderStatus NE '') or (IsComplete NE '') ) then
|
||||
Open 'DICT.NICA_ORDERS' to hDict then
|
||||
Query = ''
|
||||
Table = 'NICA_ORDERS'
|
||||
Option = 'E'
|
||||
Flag = ''
|
||||
If EntityType NE '' then Query := 'ENTITY_TYPE' : @VM : EntityType : @FM
|
||||
If EntityID NE '' then Query := 'ENTITY_ID' : @VM : EntityID : @FM
|
||||
If OrderType NE '' then Query := 'ORDER_TYPE' : @VM : OrderType : @FM
|
||||
If OrderStatus NE '' then Query := 'ORDER_STATUS' : @VM : OrderStatus : @FM
|
||||
If IsComplete NE '' then Query := 'IS_COMPLETE' : @VM : IsComplete : @FM
|
||||
Btree.Extract(Query, Table, hDict, OrderKeys, Option, Flag)
|
||||
If Flag NE 0 then
|
||||
ErrorMsg = 'Error in ':Service:' service. Btree.Extract call failed.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Failed to open DICT.NICA_ORDERS.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. At least one search parameter must be provided.'
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
Response = OrderKeys
|
||||
end else
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
|
||||
End Service
|
||||
|
||||
|
||||
Service GetOrderUpdates()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
ActiveOrderIds = Nica_Orders_Services('GetActiveOrders')
|
||||
For each OrderId in ActiveOrderIds using @VM
|
||||
Nica_Orders_Services('GetOrderStatusUpdate', OrderId)
|
||||
Next OrderId
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service GetActiveOrders(EntityType=ENTITY_TYPES, EntityId, OrderType=ORDER_TYPES)
|
||||
|
||||
Response = Nica_Orders_Services('GetOrderIds', EntityType, EntityID, OrderType, '#cancelled', False$)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service CreateNewOrder(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES)
|
||||
|
||||
ErrorMsg = ''
|
||||
EntityTypes = 'REACTOR,REACTOR_LOG'
|
||||
OrderTypes = 'INTRUSIVE_MAINT,CHANGEOVER,INITIATE_IDLE,IDLE,ASM_HTR_TUBE_CHANGE,ASM_HTR_ANNUAL_PM,'
|
||||
OrderTypes := 'ASM_HTR_SEMIANNUAL_PM,ASM_HTR_FIVE_AND_TEN_YEAR_PM,IQS_HGCV_ALARM'
|
||||
|
||||
Machine = Environment_Services('GetServer')
|
||||
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
||||
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\NicaOrders'
|
||||
makeDirSuccess = Utility("MAKEDIR", LogPath)
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : LogTime : '_CreateNicaOrder.csv'
|
||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
||||
|
||||
Prod = Environment_Services('IsProd')
|
||||
IgnoreCertErrors = Not(Prod)
|
||||
|
||||
If ( (EntityType NE '') and (EntityID NE '') and (OrderType NE '') ) then
|
||||
|
||||
Begin Case
|
||||
Case Not(InList(EntityTypes, EntityType, ','))
|
||||
ErrorMsg = 'Error in ':Service:' service. Unsupported entity type'
|
||||
Case Not(InList(OrderTypes, OrderType, ','))
|
||||
ErrorMsg = 'Error in ':Service:' service. Unsupported order type'
|
||||
End Case
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Attempting to create NICA order for entity ':EntityType:' ' :EntityID:' of type ':OrderType
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
|
||||
CurrActiveOrders = Nica_Orders_Services('GetActiveOrders', EntityType, EntityID, OrderType)
|
||||
OrderTypeAlreadyActive = (CurrActiveOrders NE '')
|
||||
|
||||
If OrderTypeAlreadyActive EQ False$ then
|
||||
|
||||
Begin Case
|
||||
Case EntityType EQ 'REACTOR'
|
||||
ReactNo = EntityID
|
||||
|
||||
Case EntityType EQ 'REACTOR_LOG'
|
||||
ReactNo = Xlate(EntityType, EntityID, REACTOR_LOG_REACTOR$, 'X')
|
||||
End Case
|
||||
|
||||
// Call the API
|
||||
NicaURL = Environment_Services("GetProveInApiUrl"):'/checklists?'
|
||||
NicaURL := 'checklistType=':OrderType
|
||||
NicaURL := '&reactorNumber=':ReactNo
|
||||
|
||||
Retries = 3
|
||||
BackoffSeconds = 1
|
||||
IsSuccessful = False$
|
||||
|
||||
OrderId = ''
|
||||
|
||||
Loop
|
||||
while (IsSuccessful EQ False$ and Retries GT 0)
|
||||
WaitSeconds = (3 - retries) * BackoffSeconds
|
||||
Delay(WaitSeconds)
|
||||
|
||||
Retries = Retries - 1
|
||||
|
||||
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'POST', NicaURL, 'Accept':@VM:'*/*', '', '', '', False$, False$, '', IgnoreCertErrors)
|
||||
If HttpResponseJson NE '' then
|
||||
ObjResponseJson = ''
|
||||
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
||||
OrderId = SRP_JSON(ObjResponseJson, 'GetValue', 'id')
|
||||
If OrderId NE '' then
|
||||
Convert @Lower.Case to @Upper.Case in OrderId
|
||||
NicaOrderRec = ''
|
||||
NicaOrderRec<NICA_ORDERS.ORDER_TYPE$> = OrderType
|
||||
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
|
||||
NicaOrderRec<NICA_ORDERS.ENTITY_TYPE$> = EntityType
|
||||
NicaOrderRec<NICA_ORDERS.ENTITY_ID$> = EntityID
|
||||
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
|
||||
Database_Services('WriteDataRow', 'NICA_ORDERS', OrderId, NicaOrderRec, True$, False$, False$)
|
||||
If Error_Services('NoError') then
|
||||
If ( (OrderType _EQC 'INITIATE_IDLE') and (EntityType _EQC 'REACTOR') ) then
|
||||
Open 'REACTOR' to hReactor then
|
||||
WriteV True$ to hReactor, ReactNo, REACTOR_IDLE_STARTUP_REQUIRED$ else
|
||||
ErrorMsg = 'Error in ':Service:' service. Error setting IDLE_STARTUP_REQUIRED flag in REACTOR record.'
|
||||
end
|
||||
end
|
||||
end
|
||||
If ErrorMsg EQ '' then
|
||||
IsSuccessful = True$
|
||||
Response = OrderId
|
||||
end
|
||||
end else
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Null OrderId returned from MesaProveInAPI.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Error parsing JSON response from MesaProveInAPI.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Null JSON response returned from MesaProveInAPI.'
|
||||
end
|
||||
SRP_JSON(ObjResponseJson, 'Release')
|
||||
Repeat
|
||||
|
||||
If Environment_Services('IsProd') then
|
||||
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_MESAPROVEINAPI'
|
||||
end else
|
||||
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_MESAPROVEINAPI_DEV'
|
||||
end
|
||||
StatusName = 'CreateNicaOrder'
|
||||
If IsSuccessful then
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Successfully created Nica order for entity ':EntityType:' ':EntityID:' of type ':OrderType
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Ok')
|
||||
end else
|
||||
ErrorMsg = 'Error encountered when attempting to create Nica in order for reactor ':ReactNo:' of type ':OrderType
|
||||
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Critical')
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error encountered when attempting to create Nica order for entity ':EntityType:' ' :EntityID:' of type ':OrderType:'. Active order already exists.'
|
||||
end
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Null EntityType, EntityID, or OrderType passed in.'
|
||||
end
|
||||
|
||||
If ErrorMsg NE '' then
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = ErrorMsg
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
Error_Services('Add', ErrorMsg)
|
||||
Response = 'error'
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service CancelOrder(OrderId)
|
||||
|
||||
ErrorMsg = ''
|
||||
Machine = Environment_Services('GetServer')
|
||||
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
||||
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\NicaOrders'
|
||||
makeDirSuccess = Utility("MAKEDIR", LogPath)
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '_CancelNicaOrder.csv'
|
||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Attempting to cancel Nica order ' : OrderId :'.'
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
|
||||
Prod = Environment_Services('IsProd')
|
||||
IgnoreCertErrors = Not(Prod)
|
||||
|
||||
If OrderId NE '' then
|
||||
LockRetries = 3
|
||||
LockBackoffSeconds = 1
|
||||
HaveLock = False$
|
||||
Loop
|
||||
While (HaveLock EQ False$ and LockRetries GT 0)
|
||||
WaitSeconds = (3 - LockRetries) * LockBackoffSeconds
|
||||
Delay(WaitSeconds)
|
||||
LockRetries = LockRetries - 1
|
||||
HaveLock = Database_Services('GetKeyIDLock', 'NICA_ORDERS', OrderId, True$)
|
||||
Repeat
|
||||
|
||||
If HaveLock then
|
||||
NicaOrderRec = Database_Services('ReadDataRow', 'NICA_ORDERS', OrderId)
|
||||
If Error_Services('NoError') then
|
||||
EntityType = NicaOrderRec<NICA_ORDERS.ENTITY_TYPE$>
|
||||
EntityId = NicaOrderRec<NICA_ORDERS.ENTITY_ID$>
|
||||
Begin Case
|
||||
Case EntityType EQ 'REACTOR'
|
||||
ReactNo = EntityId
|
||||
|
||||
Case EntityType EQ 'REACTOR_LOG'
|
||||
ReactNo = Xlate(EntityType, EntityId, REACTOR_LOG_REACTOR$, 'X')
|
||||
|
||||
Case Otherwise$
|
||||
ErrorMsg = 'Error in ':Service:' service. Unsupported entity type.'
|
||||
End Case
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Sending cancel request for Nica order ' : OrderId : ' for reactor ' : ReactNo
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
|
||||
Response = False$
|
||||
BaseProveInUrl = Environment_Services("GetProveInApiUrl"):'/checklists?'
|
||||
UrlOrderId = OrderId
|
||||
Convert @Upper.Case to @Lower.Case in UrlOrderId
|
||||
ProveInUrl = BaseProveInUrl:'checklistOrderId=':UrlOrderId
|
||||
ProveInUrl = ProveInUrl:'&checklistState=cancelled'
|
||||
|
||||
Retries = 3
|
||||
BackoffSeconds = 1
|
||||
IsSuccessful = False$
|
||||
|
||||
Loop
|
||||
while (IsSuccessful EQ False$ and Retries GT 0)
|
||||
WaitSeconds = (3 - Retries) * BackoffSeconds
|
||||
Delay(WaitSeconds)
|
||||
Retries = Retries - 1
|
||||
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'PUT', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', False$, False$, '', IgnoreCertErrors)
|
||||
If HttpResponseJson NE '' then
|
||||
ObjResponseJson = ''
|
||||
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
||||
IsComplete = SRP_JSON(ObjResponseJson, 'GetValue', 'pendingUpdate')
|
||||
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
|
||||
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
|
||||
Database_Services('WriteDataRow', 'NICA_ORDERS', OrderId, NicaOrderRec, True$, False$, False$)
|
||||
If Error_Services('NoError') then
|
||||
OrderType = NicaOrderRec<NICA_ORDERS.ORDER_TYPE$>
|
||||
If ( (OrderType _EQC 'IDLE') and (EntityType EQ 'REACTOR') ) then
|
||||
Open 'REACTOR' to hReactor then
|
||||
WriteV False$ on hReactor, ReactNo, REACTOR_IDLE_STARTUP_REQUIRED$ else
|
||||
ErrorMsg = 'Error in ':Service:' service. Error setting IDLE_STARTUP_REQUIRED flag in REACTOR record.'
|
||||
end
|
||||
end
|
||||
end
|
||||
If ( (Response EQ True$) or (Response EQ False$) ) then IsSuccessful = True$
|
||||
end else
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
end
|
||||
If IsComplete EQ True$ then
|
||||
Response = True$
|
||||
end else
|
||||
Response = False$
|
||||
end
|
||||
end
|
||||
end
|
||||
SRP_JSON(ObjResponseJson, 'Release')
|
||||
Repeat
|
||||
|
||||
If Environment_Services('IsProd') then
|
||||
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_MESAPROVEINAPI'
|
||||
end else
|
||||
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_MESAPROVEINAPI_DEV'
|
||||
end
|
||||
StatusName = 'CancelNicaOrder'
|
||||
If ( (IsSuccessful EQ True$) and (Response NE 'error') and (ErrorMsg EQ '') ) then
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Successfully cancelled Nica order ' : OrderId : ' for reactor ' : ReactNo
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Ok')
|
||||
end else
|
||||
ErrorMsg = 'Error encountered cancelling Nica order ' : OrderId : ' for reactor ' : ReactNo
|
||||
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Critical')
|
||||
end
|
||||
end else
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
Database_Services('ReleaseKeyIDLock', 'NICA_ORDERS', OrderId)
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Failed to lock NICA_ORDERS ':OrderId:' for cancellation.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Null OrderID passed in.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
end
|
||||
|
||||
If ErrorMsg NE '' then
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = ErrorMsg
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
Error_Services('Add', ErrorMsg)
|
||||
Response = 'error'
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service GetOrderStatus(OrderId)
|
||||
|
||||
If OrderId NE '' then
|
||||
If RowExists('NICA_ORDERS', OrderId) then
|
||||
Response = Xlate('NICA_ORDERS', OrderId, 'ORDER_STATUS', 'X')
|
||||
end else
|
||||
Error_Services('Add', 'Error in ':Service:' service. Nica order ':OrderId:' does not exist.')
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'Error in ':Service:' service. Null OrderId passed in.')
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service GetOrderStatusUpdate(OrderId)
|
||||
|
||||
ErrorMsg = ''
|
||||
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
||||
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\NicaOrders'
|
||||
makeDirSuccess = Utility("MAKEDIR", LogPath)
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '_GetOrderStatusUpdate.csv'
|
||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Attempting to update Nica order ' : OrderId :'.'
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
|
||||
Prod = Environment_Services('IsProd')
|
||||
IgnoreCertErrors = Not(Prod)
|
||||
|
||||
If OrderId NE '' then
|
||||
HaveLock = Database_Services('GetKeyIDLock', 'NICA_ORDERS', OrderId, True$)
|
||||
If HaveLock then
|
||||
NicaOrderRec = Database_Services('ReadDataRow', 'NICA_ORDERS', OrderId)
|
||||
If Error_Services('NoError') then
|
||||
EntityType = NicaOrderRec<NICA_ORDERS.ENTITY_TYPE$>
|
||||
EntityId = NicaOrderRec<NICA_ORDERS.ENTITY_ID$>
|
||||
Begin Case
|
||||
Case EntityType EQ 'REACTOR'
|
||||
ReactNo = EntityId
|
||||
|
||||
Case EntityType EQ 'REACTOR_LOG'
|
||||
ReactNo = Xlate(EntityType, EntityId, REACTOR_LOG_REACTOR$, 'X')
|
||||
|
||||
Case Otherwise$
|
||||
ErrorMsg = 'Error in ':Service:' service. Unsupported entity type.'
|
||||
End Case
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Attempting to fetch Nica order ':OrderId:' for reactor ':ReactNo
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
|
||||
Response = True$
|
||||
IsSuccessful = True$
|
||||
BaseProveInUrl = Environment_Services("GetProveInApiUrl"):'/checklists?'
|
||||
UrlOrderId = OrderId
|
||||
Convert @Upper.Case to @Lower.Case in UrlOrderId
|
||||
ProveInUrl = BaseProveInUrl:'checklistOrderId=':UrlOrderId
|
||||
|
||||
Retries = 3
|
||||
BackoffSeconds = 1
|
||||
IsSuccessful = False$
|
||||
|
||||
Loop
|
||||
while (IsSuccessful EQ False$ and Retries GT 0)
|
||||
WaitSeconds = (3 - Retries) * BackoffSeconds
|
||||
|
||||
Delay(WaitSeconds)
|
||||
|
||||
Retries = Retries - 1
|
||||
|
||||
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'GET', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', False$, False$, '', IgnoreCertErrors)
|
||||
|
||||
If HttpResponseJson NE '' then
|
||||
ObjResponseJson = ''
|
||||
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
||||
IsComplete = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
|
||||
NicaOrderRec<NICA_ORDERS.ORDER_TYPE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'type')
|
||||
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
|
||||
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = IsComplete
|
||||
Database_Services('WriteDataRow', 'NICA_ORDERS', OrderId, NicaOrderRec, True$, False$, False$)
|
||||
If Error_Services('NoError') then
|
||||
If IsComplete EQ True$ then
|
||||
OrderType = NicaOrderRec<NICA_ORDERS.ORDER_TYPE$>
|
||||
If ( (OrderType _EQC 'IDLE') and (EntityType _EQC 'REACTOR') ) then
|
||||
Open 'REACTOR' to hReactor then
|
||||
WriteV False$ on hReactor, ReactNo, REACTOR_IDLE_STARTUP_REQUIRED$ else
|
||||
ErrorMsg = 'Error in ':Service:' service. Error setting IDLE_STARTUP_REQUIRED flag in REACTOR record.'
|
||||
end
|
||||
end
|
||||
end
|
||||
If ErrorMsg EQ '' then Response = True$
|
||||
end else
|
||||
Response = False$
|
||||
end
|
||||
If ( (Response EQ True$) or (Response EQ False$) ) then IsSuccessful = True$
|
||||
end else
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
end
|
||||
end
|
||||
end
|
||||
SRP_JSON(ObjResponseJson, 'Release')
|
||||
Repeat
|
||||
|
||||
If Environment_Services('IsProd') then
|
||||
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_MESAPROVEINAPI'
|
||||
end else
|
||||
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_MESAPROVEINAPI_DEV'
|
||||
end
|
||||
|
||||
StatusName = 'GetNicaOrderUpdate'
|
||||
If IsSuccessful and Response NE 'error' then
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = 'Successfully updated Nica order ':OrderId:' for reactor ':ReactNo:'.'
|
||||
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Ok')
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
end else
|
||||
Database_Services('ReleaseKeyIDLock', 'NICA_ORDERS', OrderId)
|
||||
ErrorMsg = 'Error encountered updating Nica order ':OrderId:' for reactor ':ReactNo:'.'
|
||||
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Critical')
|
||||
end
|
||||
end
|
||||
end else
|
||||
ErrorMsg = Error_Services('GetMessage')
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Failed to lock NICA_ORDERS ':OrderId:'.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. Null OrderId passed in.'
|
||||
end
|
||||
|
||||
If ErrorMsg NE '' then
|
||||
LogData = ''
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
|
||||
LogData<2> = Machine
|
||||
LogData<3> = ErrorMsg
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||
Error_Services('Add', ErrorMsg)
|
||||
Response = 'error'
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Internal GoSubs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user