Compile function React_Servs_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 SRP Computer Solutions, Inc. Name : React_Servs_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) 08/02/22 djs Original programmer. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler $Insert SERVICE_SETUP $Insert APP_INSERTS $Insert RLIST_EQUATES $Insert REACT_SERVS_EQUATES Equ NEW_EXIST$ To 0 Equ NEXT_CUR$ To 1 Equ ADD_EXIST$ to 2 Equ THERMOCOUPLE_FRONT$ To 237 Equ THERMOCOUPLE_SIDE$ To 238 Equ THERMOCOUPLE_REAR$ To 239 Equ LAMP_ZONE_1A$ to 10700 Equ LAMP_ZONE_1B$ to 10701 Equ LAMP_ZONE_1C$ to 10702 Equ LAMP_ZONE_2A$ to 10703 Equ LAMP_ZONE_2B$ to 10704 Equ LAMP_ZONE_3A$ to 10705 Equ LAMP_ZONE_3B$ to 10706 Equ LAMP_ZONE_3C$ to 10707 Equ LAMP_ZONE_3D$ to 10708 Equ LAMP_ZONE_4$ to 10709 Equ LAMP_ZONE_5$ to 10710 Equ LAMP_ZONE_8A$ to 10711 Equ LAMP_ZONE_8B$ to 10712 Equ LAMP_ZONE_9B$ to 10713 Equ LAMP_ZONE_6A$ to 10714 Equ LAMP_ZONE_7A$ to 10715 Equ LAMP_ZONE_10A$ to 10716 Equ LAMP_ZONE_10B$ to 10717 Equ LAMP_ZONE_9A$ to 10718 Equ LAMP_ZONE_6C$ to 10720 Equ LAMP_ZONE_6B$ to 10721 Equ LAMP_ZONE_7B$ to 10722 Equ LAMP_ZONE_11A$ to 10723 Equ LAMP_ZONE_11B$ to 10724 Equ LAMP_ZONE_12$ to 10725 Declare function Database_Services, Error_Services, SRP_JSON, React_Servs_Services, SrP_Array Declare subroutine SRP_JSON, Error_Services, React_Servs_Services, Extract_Si_Keys GoToService Return Response or "" //----------------------------------------------------------------------------- // SERVICES //----------------------------------------------------------------------------- Service GetIntrMaintFlowIds(ReactServIds) ErrorMsg = '' IntrMaintFlowIds = '' If ReactServIds NE '' then ReactServIds = SRP_Array('Clean', ReactServIds, 'TrimAndMakeUnique', @VM) Convert @VM to @FM in ReactServIds If RowExists('REACT_SERVS', ReactServIds) then IntrusiveReactServs = '' Extract_Si_Keys('REACT_SERVS', 'IS_INTRUSIVE', True$, IntrusiveReactServs) ErrCode = '' If Not(Get_Status(ErrCode)) then Convert @FM to @VM in ReactServIds ReactServIds = SRP_Array('Join', IntrusiveReactServs, ReactServIds, 'AND', @VM) If ReactServIds NE '' then IntrMaintFlowIds = Xlate('REACT_SERVS', ReactServIds, REACT_SERVS_INTR_MAINT_FLOW_ID$, 'X') NumTCSvcs = 0 NumLampSvcs = 0 For each ReactServId in ReactServIds using @VM NumTCSvcs += ( (ReactServId EQ THERMOCOUPLE_FRONT$) or (ReactServId EQ THERMOCOUPLE_SIDE$) or (ReactServId EQ THERMOCOUPLE_REAR$) ) NumLampSvcs += (ReactServId EQ LAMP_ZONE_1A$) or (ReactServId EQ LAMP_ZONE_1B$) or (ReactServId EQ LAMP_ZONE_1C$) | or (ReactServId EQ LAMP_ZONE_2A$) or (ReactServId EQ LAMP_ZONE_2B$) or (ReactServId EQ LAMP_ZONE_3A$) | or (ReactServId EQ LAMP_ZONE_3B$) or (ReactServId EQ LAMP_ZONE_3C$) or (ReactServId EQ LAMP_ZONE_3D$) | or (ReactServId EQ LAMP_ZONE_4$) or (ReactServId EQ LAMP_ZONE_5$) or (ReactServId EQ LAMP_ZONE_8A$) | or (ReactServId EQ LAMP_ZONE_8B$) or (ReactServId EQ LAMP_ZONE_9B$) or (ReactServId EQ LAMP_ZONE_6A$) | or (ReactServId EQ LAMP_ZONE_7A$) or (ReactServId EQ LAMP_ZONE_10A$) or (ReactServId EQ LAMP_ZONE_10B$) | or (ReactServId EQ LAMP_ZONE_9A$) or (ReactServId EQ LAMP_ZONE_6C$) or (ReactServId EQ LAMP_ZONE_6B$) | or (ReactServId EQ LAMP_ZONE_7B$) or (ReactServId EQ LAMP_ZONE_11A$) or (ReactServId EQ LAMP_ZONE_11B$) | or (ReactServId EQ LAMP_ZONE_12$) Until ( (NumTCSvcs GT 1) and (NumLampSvcs GT 1) ) Next ReactServId If (NumLampSvcs GT 1) then // If two or more lamps are replaced, use flow "C" instead // of "I" per EpiMSA WI-0022-1 Rev C Intrusive Maintenance Checklist.xlsx Swap 'I' with 'C' in IntrMaintFlowIds end If (NumTCSvcs GT 1) then // If two or more thermocouples are replaced, use flow "C" instead // of "C" per EpiMSA WI-0022-1 Rev C Intrusive Maintenance Checklist.xlsx Swap 'E' with 'C' in IntrMaintFlowIds end end end else ErrorMsg = 'Error in service ':Service:'. Error calling Extract_Si_Keys on the IS_INTRUSIVE column within the REACT_SERVS table.' end end else Convert @FM to ',' in ReactServIds ErrorMsg = 'Error in service ':Service:'. One or more keys, ':ReactServIds:', do not exist in the REACT_SERVS table.' end end else ErrorMsg = 'Error in service ':Service:'. Null ReactServIds passed in.' end If ErrorMsg NE '' then Error_Services('Add', ErrorMsg) end else Response = SRP_Array('Clean', IntrMaintFlowIds, 'TrimAndMakeUnique', @VM) end end service Service GetReactMetrics() Response = '' ReactMetrics = Xlate('APP_INFO', 'REACTOR_METRICS', 1, 'X', '') Swap @VM with @FM in ReactMetrics Response = ReactMetrics end service Service GetAssociatedMetrics(ServID) AssocMetrics = Xlate('REACT_SERVS', ServID, REACT_SERVS_ASSOC_METRICS$, 'X', '') Response = AssocMetrics end service Service GetReactServs() Response = '' Query = 'SELECT REACT_SERVS BY SERV_ID' GoSub ClearCursors RList(Query, TARGET_ACTIVELIST$, '', '', '') If Not(Get_Status(ErrCode)) then EOF = False$ Loop ReadNext KeyID else EOF = True$ Until EOF Response<-1> = KeyID Repeat end End Service Service ConvertRecordToJSON(KeyID, Record, itemURL) jsonRecord = '' If KeyID NE '' then If Record EQ '' then Record = Database_Services('ReadDataRow', 'REACT_SERVS', KeyID) If Error_Services('NoError') then @DICT = Database_Services('GetTableHandle', 'DICT.REACT_SERVS') @ID = KeyID @RECORD = Record If SRP_JSON(objJSON, 'New', 'Object') then If SRP_JSON(objReactServ, 'New', 'Object') then SRP_JSON(objReactServ, 'SetValue', 'keyId', @ID) SRP_JSON(objReactServ, 'SetValue', 'reactType', {REACT_TYPE}) SRP_JSON(objReactServ, 'SetValue', 'action', {ACTION}) SRP_JSON(objReactServ, 'SetValue', 'description', {DESCRIPTION}) //SRP_JSON(objReactServ, 'SetValue', 'graphiteOrTube', OConv({GRAPHITE_OR_TUBE}, '[GRAPHITE_OR_TUBE_CONV]')) SRP_JSON(objReactServ, 'SetValue', 'graphiteOrTube', {GRAPHITE_OR_TUBE}) SRP_JSON(objReactServ, 'SetValue', 'inactiveDate', OConv({INACTIVE_DATE}, 'D4/')) SRP_JSON(objReactServ, 'SetValue', 'injectorChange', {INJECTOR_CHANGE}, 'Boolean') SRP_JSON(objReactServ, 'SetValue', 'noteRequired', {NOTE_REQ}, 'Boolean') SRP_JSON(objReactServ, 'SetValue', 'pmDays', {PM_DAYS}) SRP_JSON(objReactServ, 'SetValue', 'reactGas', {REACT_GAS}) SRP_JSON(objReactServ, 'SetValue', 'reactItem', {REACT_ITEM}) SRP_JSON(objReactServ, 'SetValue', 'reactItemDesc', {REACT_ITEM_DESC}) SRP_JSON(objReactServ, 'SetValue', 'reactItemType', {REACT_ITEM_TYPE}) SRP_JSON(objReactServ, 'SetValue', 'reactServCatId', {REACT_SERV_CAT_ID}) SRP_JSON(objReactServ, 'SetValue', 'reactServCatDesc', {REACT_SERV_CAT_DESC}) SRP_JSON(objReactServ, 'SetValue', 'reactSystem', {REACT_SYSTEM}) SRP_JSON(objReactServ, 'SetValue', 'requireArmWandData', {REQ_ARM_WAND_DATA}) SRP_JSON(objReactServ, 'SetValue', 'status', {STATUS}) SRP_JSON(objReactServ, 'SetValue', 'svcDesc', {SVC_DESC}) SRP_JSON(objReactServ, 'SetValue', 'sysDesc', {SYS_DESC}) SRP_JSON(objReactServ, 'SetValue', 'tcChangeService', {TC_CHANGE_SERVICE}) SRP_JSON(objJSON, 'Set', 'reactServ', objReactServ) SRP_JSON(objReactServ, 'Release') end If itemURL NE '' then // The itemURL was passed in so add HAL+JSON properties. // Create the _links property and then all link objects needed for this resource. If SRP_JSON(objLinks, 'New', 'Object') then // Create a self link. If SRP_JSON(objLink, 'New', 'Object') then SRP_JSON(objLink, 'SetValue', 'href', ItemURL, 'String') SRP_JSON(objLink, 'SetValue', 'title', 'Self', 'String') SRP_JSON(objLinks, 'Set', 'self', objLink) SRP_JSON(objLink, 'Release') end SRP_JSON(objJSON, 'Set', '_links', objLinks) SRP_JSON(objLinks, 'Release') end // Create the _class property for this resource. SRP_JSON(objJSON, 'SetValue', '_class', 'resource') end jsonRecord = SRP_JSON(objJSON, 'Stringify', 'Styled') SRP_JSON(objJSON, 'Release') end else Error_Services('Add', 'Unable to create JSON representation in the ' : Service : ' service.') end end end else Error_Services('Add', 'KeyID argument was missing in the ' : Service : ' service.') end Response = jsonRecord end service //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal GoSubs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ClearCursors: For counter = 0 to 8 ClearSelect counter Next counter return