/** * PIとの通信時、使う共通機能 * 日付変換、メール送信なの */ global class NFMUtil { public static Integer MaxLogColumnLength = 131072; public static String DummyAssetProfix = '不可用:'; public static String Authorization = 'Basic T0NNX1NGX1VTRVI6b2Ntc2ZkYzg0MDI='; public static String CLIENT_CERT_NAME = null; public static String SBG001_ENDPOINT = null; public static String SBG007_ENDPOINT = null; public static String SBG027_ENDPOINT = null; public static String CBPR_Auth_Sap = null; static { if (isSandbox()) { System.debug('sandbox'); CBPR_Auth_Sap = 'Basic U0ZEQ19XU1VTRVI6cG9xMTIzNDU='; CLIENT_CERT_NAME = 'owdc_test'; // SBG001_ENDPOINT = 'https://owdc-test.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_T&receiverParty=&receiverService=&interface=SBG001_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG001'; //SBG007_ENDPOINT = 'https://owdc-test.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_T&receiverParty=&receiverService=&interface=SBG007_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG007'; //SBG027_ENDPOINT = 'https://owdc-test.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_T&receiverParty=&receiverService=&interface=SBG027_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG027'; //SBG027_ENDPOINT = 'https://wdp.olympus.com.cn:44301/RESTAdapter/SBG027'; // SBG027_ENDPOINT = 'http://wdp.olympus.com.cn:8089/RESTAdapter/SBG027'; // SBG001_ENDPOINT = 'http://wdp.olympus.com.cn:44301/RESTAdapter/SBG001'; //SBG001_ENDPOINT = 'https://owdc-test.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_T&receiverParty=&receiverService=&interface=SBG001_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG001'; SBG001_ENDPOINT = 'http://wdp.olympus.com.cn:8089/RESTAdapter/SBG001'; //SBG007_ENDPOINT = 'https://owdc-test.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_T&receiverParty=&receiverService=&interface=SBG007_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG007'; SBG007_ENDPOINT = 'http://wdp.olympus.com.cn:8089/RESTAdapter/SBG007'; //SBG027_ENDPOINT = 'https://owdc-test.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_T&receiverParty=&receiverService=&interface=SBG027_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG027'; //SBG027_ENDPOINT = 'https://wdp.olympus.com.cn:44301/RESTAdapter/SBG027'; SBG027_ENDPOINT = 'http://wdp.olympus.com.cn:8089/RESTAdapter/SBG027'; } else { CBPR_Auth_Sap = 'Basic U0ZEQ19XU1VTRVI6cG9wMTIzNDU='; System.debug('production'); CLIENT_CERT_NAME = 'sfdc_ocn'; //SBG001_ENDPOINT = 'https://owdc.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_P&receiverParty=&receiverService=&interface=SBG001_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG001'; SBG001_ENDPOINT = 'https://wdp.olympus.com.cn:44302/RESTAdapter/SBG001'; //SBG007_ENDPOINT = 'https://owdc.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_P&receiverParty=&receiverService=&interface=SBG007_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG007'; SBG007_ENDPOINT = 'https://wdp.olympus.com.cn:44302/RESTAdapter/SBG007'; //SBG027_ENDPOINT = 'https://owdc.olympus.co.jp/XISOAPAdapter/MessageServlet?senderParty=&senderService=OCN_SFDC_P&receiverParty=&receiverService=&interface=SBG027_Sync_BC2GPI&interfaceNamespace=http%3A%2F%2Folympus.co.jp%2Fgpi%2FSBG027'; SBG027_ENDPOINT = 'https://wdp.olympus.com.cn:44302/RESTAdapter/SBG027'; } } // 受信用 global class Monitoring { webservice String Tag; webservice String Sender; webservice String Receiver; webservice String MessageType; webservice String MessageGroupNumber; webservice String NumberOfRecord; webservice String TransmissionDateTime; webservice String Text; } //add for pipl sushanhu 20220311 start /*public static response sendToPiAWS(String rowDataStr, String endpoint,String awsToken) { Http http = new Http(); HttpRequest req = new HttpRequest(); HTTPResponse res; String resb; req.setHeader('Content-Type', 'application/json'); req.setTimeout(120000); req.setEndpoint(endpoint); req.setMethod('POST'); req.setHeader('pi-token', awsToken); req.setBody(rowDataStr); res = http.send(req); string ress = String.valueOf(res.getStatusCode()) ; resb = res.getBody(); system.debug('ress:' + ress); return new response(ress, resb); } public static response getAwsToken(){ String responseBody = AWSServiceTool.getAWSToken(); return new response('success', responseBody); } public class response { public string status; public string responseBody; public response(string status, string responseBody ) { this.status = status; this.responseBody = responseBody; } }*/ //add for pipl sushanhu 20220311 end /** * @return yyyyMMdd の日付文字列 */ public static String formatDate2Str(Date dt) { String rtn = null; if (dt == null) { return rtn; } rtn = String.valueOf(dt); rtn = rtn.replaceAll('-', ''); if (rtn >= '40001231') { rtn = '99991231'; } else if (rtn < '19000101') { rtn = '19000101'; } return rtn; } public static Date parseStr2DateTimeDate(String pDateTime) { if (pDateTime == null || pDateTime.length() != 14) { return null; } return parseStr2Date(pDateTime.substring(0, 8)); } public static Datetime parseStr2DateTime(String pDateTime) { if (pDateTime == null || pDateTime.length() != 14) { return null; } return parseStr2DateTime(pDateTime.substring(0, 8), pDateTime.substring(8, 14)); } public static Datetime parseStr2DateTime(String pDate, String pTime) { Datetime rtn = null; try { if (pDate == null || pDate.length() != 8) { return rtn; } else if (pDate > '40001231') { pDate = '40001231'; } else if (pDate < '19000101') { pDate = '19000101'; } if (pDate == '19000101') { return null; } rtn = Datetime.newinstance( Integer.valueOf(pDate.substring(0, 4)), Integer.valueOf(pDate.substring(4, 6)), Integer.valueOf(pDate.substring(6, 8)), Integer.valueOf(pTime.substring(0, 2)), Integer.valueOf(pTime.substring(2, 4)), Integer.valueOf(pTime.substring(4, 6)) ); } catch (Exception ex) { System.debug(Logginglevel.ERROR, 'NFMUtil#parseStr2DateTime(' + pDate + ', ' + pTime + ')' + ex.getMessage()); } return rtn; } /** * @param pStr yyyyMMdd の日付文字列 */ public static Date parseStr2Date(String pStr) { return parseStr2Date(pStr, true); } /** * @param pStr yyyyMMdd の日付文字列 * @param changeToNull 19000101以下の場合 null に変換するかどうか */ public static Date parseStr2Date(String pStr, boolean changeToNull) { Date rtn = null; try { if (pStr == null || pStr.length() != 8) { return rtn; } else if (pStr > '40001231') { pStr = '40001231'; } else if (pStr < '19000101') { pStr = '19000101'; } if (pStr == '19000101' && changeToNull) { return null; } rtn = Date.newinstance( Integer.valueOf(pStr.substring(0, 4)), Integer.valueOf(pStr.substring(4, 6)), Integer.valueOf(pStr.substring(6, 8)) ); } catch (Exception ex) { System.debug(Logginglevel.ERROR, 'NFMUtil#parseStr2Date(' + pStr + ')' + ex.getMessage()); } return rtn; } /** * もしkeyがmapに存在しない場合、keyをそのまま戻る */ public static String getMapValue(Map transferMap, String col, String key, BatchIF_Log__c iflog) { String rtn = key; if (transferMap == null) { return rtn; } if (key == null) { return null; } if (col == null) { col = ''; } rtn = transferMap.get(col + key); if (rtn == null) { iflog.ErrorLog__c += 'Warning! Please check [' + col + '] can not transfer key [' + key + ']\n'; rtn = key; } return rtn; } /** * 先頭の指定文字をtrim * * @param trimChar 指定したtrim文字 */ public static String trimLeft(String orgStr, String trimChar) { String rtn = orgStr; if (orgStr == null) { return rtn; } if (trimChar == null) { return null; } rtn = orgStr.replaceAll('^' + trimChar + '+(?!$)', ''); return rtn; } public static Boolean isSandbox() { //System.debug(URL.getSalesforceBaseUrl().getHost()); //return URL.getSalesforceBaseUrl().getHost().left(2).equalsignorecase('cs'); return [SELECT IsSandbox FROM Organization LIMIT 1].IsSandbox; } public static void sendToSap(String rowDataStr, String endpoint) { Http http = new Http(); HttpRequest req = new HttpRequest(); HTTPResponse res; String resb; req.setTimeout(120000); req.setEndpoint(endpoint); req.setMethod('POST'); req.setHeader('Authorization', CBPR_Auth_Sap); req.setBody(rowDataStr); res = http.send(req); resb = res.getBody(); } public static String sendToSapRet(String rowDataStr, String endpoint) { Http http = new Http(); HttpRequest req = new HttpRequest(); HTTPResponse res; String resb; req.setTimeout(120000); req.setEndpoint(endpoint); req.setMethod('POST'); req.setHeader('Authorization', CBPR_Auth_Sap); req.setBody(rowDataStr); res = http.send(req); resb = res.getStatus(); return resb; } public static BatchIF_Log__c makeRowData(NFMUtil.Monitoring Monitoring, String NFMType, Object NFMData) { BatchIF_Log__c rowData = new BatchIF_Log__c(); rowData.Type__c = NFMType; rowData.MessageGroupNumber__c = Monitoring.MessageGroupNumber; rowData.TransmissionDateTime__c = Monitoring.TransmissionDateTime; rowData.RowDataFlg__c = true; rowData.Log__c = ''; rowData.ErrorLog__c = ''; String rowDataStr = JSON.serialize(NFMData); if (rowDataStr.length() > 0) { Integer splitIdx = 1; while (rowDataStr.length() > 0) { if (splitIdx == 1) { rowData.put('Log__c', rowDataStr.substring(0, (rowDataStr.length() > MaxLogColumnLength ? MaxLogColumnLength : rowDataStr.length()))); } else if (splitIdx == 13) { rowData.ErrorLog__c = rowDataStr; break; } else { rowData.put('Log' + splitIdx + '__c', rowDataStr.substring(0, (rowDataStr.length() > MaxLogColumnLength ? MaxLogColumnLength : rowDataStr.length()))); } splitIdx++; rowDataStr = rowDataStr.substring((rowDataStr.length() > MaxLogColumnLength ? MaxLogColumnLength : rowDataStr.length())); } } return rowData; } public static BatchIF_Log__c saveRowData(NFMUtil.Monitoring Monitoring, String NFMType, Object NFMData) { BatchIF_Log__c rowData = new BatchIF_Log__c(); rowData.Type__c = NFMType; rowData.MessageGroupNumber__c = Monitoring.MessageGroupNumber; rowData.TransmissionDateTime__c = Monitoring.TransmissionDateTime; rowData.RowDataFlg__c = true; rowData.Log__c = ''; rowData.ErrorLog__c = ''; insert rowData; String rowDataStr = JSON.serialize(NFMData); if (rowDataStr.length() > 0) { Integer splitIdx = 1; while (rowDataStr.length() > 0) { if (splitIdx == 1) { rowData.put('Log__c', rowDataStr.substring(0, (rowDataStr.length() > MaxLogColumnLength ? MaxLogColumnLength : rowDataStr.length()))); } else if (splitIdx == 13) { rowData.ErrorLog__c = rowDataStr; break; } else { rowData.put('Log' + splitIdx + '__c', rowDataStr.substring(0, (rowDataStr.length() > MaxLogColumnLength ? MaxLogColumnLength : rowDataStr.length()))); } splitIdx++; rowDataStr = rowDataStr.substring((rowDataStr.length() > MaxLogColumnLength ? MaxLogColumnLength : rowDataStr.length())); } update rowData; } return rowData; } public static String getRowDataStr(BatchIF_Log__c rowData) { String rowDataStr = rowData.Log__c; Integer splitIdx = 2; while (rowData.get('Log' + splitIdx + '__c') != null && String.isBlank('' + rowData.get('Log' + splitIdx + '__c')) == false) { rowDataStr += rowData.get('Log' + splitIdx + '__c'); splitIdx++; if (splitIdx == 13) break; } if (String.isBlank(rowData.ErrorLog__c) == false) { rowDataStr += rowData.ErrorLog__c; } return rowDataStr; } //转换表转换后的数据 public static Map BatchIF_Transfer(String object_API_Name) { Map result = new Map(); List transferList = [select Table__c, Column__c, External_value__c, Internal_value__c from BatchIF_Transfer__c where Dropped_Flag__c = false and Table__c = :object_API_Name]; for (BatchIF_Transfer__c t : transferList) { result.put(t.Column__c + t.External_value__c, t.Internal_value__c); } return result; } //add for pipl sushanhu 20220311 start /*global class NFMResponse{ public Boolean SFStatus; public String SFMessage; public StaticResponse staticResponse; } global class StaticResponse{ public string status; public String Message; public StaticResponse(){ status='0'; Message=''; } } public static NFMResponse getNFMResponse(){ NFMResponse result=new NFMResponse(); result.staticResponse =new StaticResponse(); return result; }*/ //add for pipl sushanhu 20220311 end public static Boolean EscapeSBG001TriggerHandler = false; }