/* 发给谁 */ public with sharing class NFM112Controller { public static String status; // public class NFM112 { // public Payments_element Payments_element; // } public class Payments_elements{ public NFMUtil.Monitoring Monitoring; public Payment_element Agent; } public class Payment_element{ public String AgentCode; public String AdvancePaymentFlag; } @future (callout=true) public static void callout(String iflog_Id, String samId){ executeNotFuture(iflog_Id,samId); } public static void executeNotFuture(String iflog_Id, String samId){ if (samId == null) { return; } //MessageGroupNumber的获取 List iflogList = [Select Id, Name, Log__c, ErrorLog__c from BatchIF_Log__c where Id = :iflog_Id]; BatchIF_Log__c iflog = null; if (iflogList.size() > 0) { iflog = iflogList.get(0); iflog.ErrorLog__c = ''; } else { //没有取得数据,就是被rollback了 // return; iflog = new BatchIF_Log__c(); iflog.Type__c = 'NFM112'; iflog.Log__c = 'callout start\n'; } //Monitoring的设定 String logstr = iflog.Log__c + '\nNumberOfRecord=' + ''; Datetime nowDT = Datetime.now(); String nowStr = nowDT.format('yyyyMMddHHmm'); Payments_elements paymentOrders = new Payments_elements(); paymentOrders.Monitoring = new NFMUtil.Monitoring(); paymentOrders.Monitoring.TransmissionDateTime = nowStr; paymentOrders.Monitoring.Text = ''; paymentOrders.Monitoring.Tag = 'MSGH'; paymentOrders.Monitoring.Sender = 'SFDC'; paymentOrders.Monitoring.Receiver = 'NFM112'; paymentOrders.Monitoring.NumberOfRecord = '1'; paymentOrders.Monitoring.MessageType = 'NFM112'; paymentOrders.Monitoring.MessageGroupNumber = iflog.Name; BatchIF_Log__c rowData = null; try { //查数据付给字段 paymentOrders.Agent = new Payment_element(); List allList =[select Management_Code__c, FirstParagraph__c, MonthlyPayment__c from Account where RecordTypeId = '01210000000Qem1' AND Id =:samId];//AND RecordType = '販売店' for(Account ac : allList){ Payment_element pm = new Payment_element(); pm.AgentCode = ac.Management_Code__c; string temp; if(ac.FirstParagraph__c == false && ac.MonthlyPayment__c == false){ temp = ''; }else{ temp = 'X'; } pm.AdvancePaymentFlag = temp; paymentOrders.Agent = pm; } if(paymentOrders.Agent != null){ NFMUtil.Monitoring Monitoring = new NFMUtil.Monitoring(); Monitoring.Tag = paymentOrders.Monitoring.Tag; Monitoring.Sender = paymentOrders.Monitoring.Sender; Monitoring.Receiver = paymentOrders.Monitoring.Receiver; Monitoring.MessageType = paymentOrders.Monitoring.MessageType; Monitoring.MessageGroupNumber = paymentOrders.Monitoring.MessageGroupNumber; Monitoring.NumberOfRecord = paymentOrders.Monitoring.NumberOfRecord; Monitoring.TransmissionDateTime = paymentOrders.Monitoring.TransmissionDateTime; Monitoring.Text = ''; // Payments_element nfm112 = new Payments_element(); // nfm112.Payments_element = new Payments_element(); // nfm112.Payments_element = paymentOrders; rowData = NFMUtil.makeRowData(Monitoring, 'NFM112', paymentOrders); execute(rowData, iflog); } logstr += '\nend'; } catch(Exception ex) { //发生错误的情况 System.debug(Logginglevel.ERROR, 'NFM112_' + iflog.Name + ':' + ex.getMessage()); System.debug(Logginglevel.ERROR, 'NFM112_' + iflog.Name + ':' + ex.getStackTraceString()); logstr += ex.getMessage(); iflog.ErrorLog__c += ex.getMessage() + '\n'; iflog.ErrorLog__c += ex.getStackTraceString() + '\n'; } System.debug('rowData--->'+rowData); if (rowData != null) { upsert rowData; } iflog.Log__c = logstr; upsert iflog; } //手动发送 public static void ManualExecute(String rowDataId) { List < BatchIF_Log__c > row = [select id, name, MessageGroupNumber__c, retry_cnt__c, RowDataFlg__c, ErrorLog__c, Type__c, Log__c, Log2__c, Log3__c, Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c, Log11__c, Log12__c from BatchIF_Log__c where id =: rowDataId ]; if (row.size() > 0) execute(row[0], null); } //正常发送 public static void execute(BatchIF_Log__c rowData, BatchIF_Log__c iflog) { Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt); String rowDataStr = NFMUtil.getRowDataStr(rowData); system.debug(rowDataStr); // Payments_element paymentOrders = (Payments_element) JSON.deserialize(rowDataStr, Payments_element.class); String logstr = rowData.MessageGroupNumber__c + ' start\n'; Boolean needUpdateIflog = false; if (iflog == null) { needUpdateIflog = true; iflog = new BatchIF_Log__c(); iflog.Type__c = 'NFM112'; iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c; iflog.Log__c = logstr; iflog.ErrorLog__c = ''; } else { logstr = iflog.Log__c; iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c; } try{ system.debug('try内容'); //发送接口 status = NFMUtil.sendToSapRet(rowDataStr,NFMUtil.NFM112_ENDPOINT ); System.debug('NFM112Log--status->'+ status); if (status == 'Accepted') { rowData.retry_cnt__c = 0; } else { // if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0; // if (rowData.retry_cnt__c < batch_retry_max_cnt) { // rowData.retry_cnt__c++; // LogAutoSendSchedule.assignOneMinute(); // } // if (rowData.retry_cnt__c >= batch_retry_max_cnt) { // rowData.ErrorLog__c = 'status:' + status + // '\n错误次数已经超过自动送信设定的最大次数,请手动送信'; // } rowData = NFMUtil.LogAutoSend(rowData, null, status); } } catch (Exception ex) { //发生错误的情况 System.debug(Logginglevel.ERROR, 'NFM112_' + iflog.Name + ':' + ex.getMessage()); System.debug(Logginglevel.ERROR, 'NFM112_' + iflog.Name + ':' + ex.getStackTraceString()); logstr += ex.getMessage(); // iflog.ErrorLog__c += ex.getMessage() + '\n'; // iflog.ErrorLog__c += ex.getStackTraceString() + '\n'; // if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0; // if (rowData.retry_cnt__c < batch_retry_max_cnt) { // rowData.retry_cnt__c++; // LogAutoSendSchedule.assignOneMinute(); // } // if (rowData.retry_cnt__c >= batch_retry_max_cnt) { // rowData.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + rowData.ErrorLog__c+'错误次数已经超过自动送信设定的最大次数,请手动送信'; // } rowData = NFMUtil.LogAutoSend(rowData, ex, null); } iflog.Log__c = logstr; if(needUpdateIflog){ upsert iflog; upsert rowData; } } }