PIPL Function Update 20220314
| | |
| | | //1. Query Contact by accountId |
| | | List<Contact> conList = new List<Contact>(); |
| | | system.debug('Account Id from Front-end:'+accountId); |
| | | PIHelper.PIIntegration contactPIIntegration = PIHelper.getPIIntegrationInfo('Contact'); |
| | | if(String.isNotBlank(accountId) && String.isNotEmpty(accountId)){ |
| | | conList = new List<Contact>([select Id,AWS_Data_Id__c from Contact where AccountId=:accountId and AWS_Data_Id__c!='' limit 500]); |
| | | conList = new List<Contact>([select Id,AWS_Data_Id__c from Contact where AccountId=:accountId and AWS_Data_Id__c!='' limit :contactPIIntegration.maxQueryNumber]); |
| | | } |
| | | //2. Prepare the Contact Info |
| | | Map<String,Contact> awsIdToContactMap = new Map<String,Contact>(); |
| | |
| | | } |
| | | // 新增联系人时, |
| | | if (accountIdSet.size() > 0) { |
| | | List<Contact> contactList = [SELECT Id,AccountId,FullName__c,LastName,FirstName,Account.Name,CManageCode__c,IsFromSPO__c |
| | | List<Contact> contactList = [SELECT Id,AccountId,FullName__c,LastName,FirstName,Account.Name,CManageCode__c,IsFromSPO__c, |
| | | LastName_Encrypted__c// 20220314 PI改造 by Bright |
| | | FROM Contact |
| | | WHERE IsFromSPO__c = false AND AccountId IN:accountIdSet]; |
| | | if ( contactList.size() > 0) { |
| | |
| | | String lastNameStr = String.isNotBlank(contact.LastName) ? contact.LastName:''; |
| | | String firstNameStr = String.isNotBlank(contact.FirstName) ? contact.FirstName:''; |
| | | String contactFullName = lastNameStr + firstNameStr; |
| | | contactFullName = contact.LastName_Encrypted__c;// 20220314 PI改造 by Bright |
| | | String accountId = String.valueOf(contact.AccountId).SubString(0,15); |
| | | Map<String,Contact> contactFullNameMap = new Map<String,Contact>(); |
| | | if (accountContactMap.containsKey(accountId)) { |
| | |
| | | String lastNameStr = String.isNotBlank(contactnew.LastName) ? contactnew.LastName:''; |
| | | String firstNameStr = String.isNotBlank(contactnew.FirstName) ? contactnew.FirstName:''; |
| | | String contactFullName = lastNameStr + firstNameStr; |
| | | |
| | | contactFullName = contactnew.LastName_Encrypted__c;// 20220314 PI改造 by Bright |
| | | if (contactFullNameMap.containsKey(contactFullName)) { |
| | | String accountName = contactFullNameMap.get(contactFullName).Account.Name; |
| | | String cManageCode = contactFullNameMap.get(contactFullName).CManageCode__c; |
| | |
| | | public static String transUrl; |
| | | public static String transId; |
| | | public static String token; |
| | | public static integer isSuccess=0; |
| | | public static List<String> sfRecordIds; |
| | | //add staic sushanhu 20220302 end |
| | | Boolean IsNeedExecute = false; //2021-06-28 mzy WLIG-BYHD79 SFDC环境batch合并调查 是否符合执行条件 |
| | | //add nfm 503 aws response start sushanhu 20220301 |
| | |
| | | |
| | | global Database.QueryLocator start(Database.BatchableContext bc) { |
| | | String query = 'select Id, Tender_information__c, infoAddress__c, ' + |
| | | 'Tender_information__r.InfoType__c, isProcessed__c, ' + |
| | | ' ErrorMessage__c from bidInfoFile__c where isProcessed__c = false '; |
| | | 'Tender_information__r.InfoType__c, isProcessed__c, ' + |
| | | ' ErrorMessage__c from bidInfoFile__c where isProcessed__c = false '; |
| | | if (String.isNotBlank(TenId)) { |
| | | query += 'and Tender_information__r.Id =: TenId'; |
| | | } |
| | |
| | | transUrl =pi.searchUrl; |
| | | NFMUtil.response response = NFMUtil.getAWSQLMData(pi.newUrl ,JSON.serialize(queryfileList), token); |
| | | system.debug('aws result'+response.responseBody); |
| | | |
| | | Map<String, Object> result = (Map<String, Object>)JSON.deserializeUntyped(response.responseBody); |
| | | system.debug('NFM503 aws result--'+response.responseBody+'status'+response.status); |
| | | transId =(String)result.get('txId'); |
| | |
| | | |
| | | update bidInfoFileList; |
| | | // add 确认事务 sushanhu 20220302 start |
| | | List<String> sfRecordIds = new List<String>(); |
| | | isSuccess =1; |
| | | if (fileList.size() > 0 ) { |
| | | for (FileAddress__c fileAddress : fileList) { |
| | | sfRecordIds.add(fileAddress.Id); |
| | | system.debug('fileAddress.Id---'+fileAddress.Id); |
| | | } |
| | | } |
| | | system.debug('成功的token'+token); |
| | | |
| | | PIHelper.confirmFileTrans('NFM503',1,JSON.serialize(sfRecordIds),transId,token,transUrl); |
| | | // PIHelper.confirmFileTrans('NFM503',1,JSON.serialize(sfRecordIds),transId,token,transUrl); |
| | | |
| | | // if (!confirm) { |
| | | // //回滚 |
| | |
| | | if (sp != null) { |
| | | Database.rollback(sp); |
| | | } |
| | | //add 确认事务 20220302 sushanhu start |
| | | system.debug('失败的token'+token); |
| | | PIHelper.confirmFileTrans('NFM503',0,'',transId,token,transUrl); |
| | | // //add 确认事务 20220302 sushanhu start |
| | | // system.debug('失败的token'+token); |
| | | // PIHelper.confirmFileTrans('NFM503',0,'',transId,token,transUrl); |
| | | //add 确认事务 20220302 sushanhu end |
| | | bidInfoFile.ErrorMessage__c = '503抛出异常:' + ex.getMessage() + '\n' + ex.getStackTraceString(); |
| | | system.debug('ErrorMessage'+bidInfoFile.ErrorMessage__c); |
| | |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | |
| | | // add confirm transaction for pipl sushanhu 20220314 start |
| | | if (sfRecordIds==null) { |
| | | PIHelper.confirmFileTrans('NFM503',0,'',transId,token,transUrl); |
| | | }else { |
| | | PIHelper.confirmFileTrans('NFM503',isSuccess,JSON.serialize(sfRecordIds),transId,token,transUrl); |
| | | } |
| | | |
| | | // add confirm transaction for pipl sushanhu 20220314 end |
| | | } |
| | | } |
| | |
| | | * |
| | | * */ |
| | | global without sharing class PIHelper { |
| | | public static Set<String> displayByOrderNumberObject = new set<String>{'Report__c'}; |
| | | public static String getObjectKeyPrefix(String objName){ |
| | | try{ |
| | | schema.sObjectType sObjType = Schema.getGlobalDescribe().get(objName); |
| | |
| | | System.debug('config = ' + config); |
| | | |
| | | //获取appid和appsecret |
| | | AWS_Integration_Info__mdt awsConfiguration = [SELECT App_Id__c,Token_URL__c,App_Secret__c,Host_URL__c FROM AWS_Integration_Info__mdt WHERE DeveloperName = 'AWS_Default_Configuration']; |
| | | AWS_Integration_Info__mdt awsConfiguration = [SELECT App_Id__c,Max_Query_Number__c,Token_URL__c,App_Secret__c,Host_URL__c FROM AWS_Integration_Info__mdt WHERE DeveloperName = 'AWS_Default_Configuration']; |
| | | if (awsConfiguration == null) { |
| | | System.debug('AWS_Integration_Info__mdt没配置'); |
| | | return null; |
| | |
| | | |
| | | //获取敏感字段 |
| | | piIntegration.PIDetails = [select id,PI_Policy_Configuration__r.Full_New_URL__c, Enable_Encrypt__c, SF_Field_API_Name__c,SF_Field_Encrypted_API__c, AWS_Field_API__c,AWS_Encrypted_Field_API__c,Field_Type__c from PI_Field_Policy_Detail__c where PI_Policy_Configuration_Name__c =:sobjectType and Enable_Encrypt__c=true]; |
| | | if(displayByOrderNumberObject.contains(sobjectType)){ |
| | | piIntegration.PIDetails = [select id,PI_Policy_Configuration__r.Full_New_URL__c, Enable_Encrypt__c, SF_Field_API_Name__c,SF_Field_Encrypted_API__c, AWS_Field_API__c,AWS_Encrypted_Field_API__c,Field_Type__c from PI_Field_Policy_Detail__c where PI_Policy_Configuration_Name__c =:sobjectType and Enable_Encrypt__c=true order by Order_Number__c]; |
| | | } |
| | | List<String> vLookUpFields = new List<String>(); |
| | | List<String> PIFields = new List<String>(); |
| | | for (PI_Field_Policy_Detail__c PIDetail : piIntegration.PIDetails) { |
| | |
| | | System.debug('PIFields = ' + PIFields.toString()); |
| | | |
| | | //填充数据 |
| | | piIntegration.maxQueryNumber = Integer.valueof(awsConfiguration.Max_Query_Number__c); |
| | | piIntegration.newUrl = config.Full_New_URL__c; |
| | | piIntegration.updateUrl = config.Full_Update_URL__c; |
| | | piIntegration.queryUrl = config.Full_Read_URL__c; |
| | |
| | | return piIntegration; |
| | | } |
| | | global class PIIntegration{ |
| | | public Integer maxQueryNumber{set;get;} |
| | | public String sobjectPrefix{set;get;} |
| | | public String searchUrl{set;get;} |
| | | public String newUrl{set;get;} |
| | |
| | | List<Contact> conList = new List<Contact>(); |
| | | system.debug('Account Id from Front-end:'+a.Id); |
| | | String accountId = a.Id; |
| | | PIHelper.PIIntegration contactPIIntegration = PIHelper.getPIIntegrationInfo('Contact'); |
| | | if(String.isNotBlank(accountId) && String.isNotEmpty(accountId)){ |
| | | conList = new List<Contact>([select Id,AWS_Data_Id__c from Contact where AccountId=:accountId and AWS_Data_Id__c!='']); |
| | | conList = new List<Contact>([select Id,AWS_Data_Id__c from Contact where AccountId=:accountId and AWS_Data_Id__c!='' limit :contactPIIntegration.maxQueryNumber]); |
| | | } |
| | | //2. Prepare the Contact Info |
| | | List<String> conAWSIds = new List<String>(); |
| | | system.debug('Contact Size:'+conList.size()); |
| | | for(Contact con:conList){ |
| | | conAWSIds.add(con.AWS_Data_Id__c); |
| | | } |
| | | contactAWSIds = JSON.serialize(conAWSIds); |
| | | staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact')); |
| | | staticResource = JSON.serialize(contactPIIntegration); |
| | | //Add By Li Jun for PIPL 20220217 End |
| | | } |
| | | //Add by Li Jun for PIPL 202202117 Start |
| | |
| | | <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> |
| | | <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/> |
| | | <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> |
| | | <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/> |
| | | <script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script> |
| | | <style> |
| | | .disabledbutton { |
| | |
| | | let textPhone = "[data-id='Phone']"; |
| | | //Email |
| | | let email = document.querySelector(textEmail); |
| | | if(email && !/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ |
| | | if(email && email.previousSibling && email.previousSibling.className.indexOf('requiredBlock')>-1 && !/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ |
| | | error_msg += ';邮件格式错误'; |
| | | } |
| | | let phone = document.querySelector(textPhone); |
| | | |
| | | if(phone && !/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ |
| | | if(phone && phone.previousSibling && phone.previousSibling.className.indexOf('requiredBlock')>-1 && !/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ |
| | | error_msg += ';电话号码错误'; |
| | | } |
| | | |
| | |
| | | let multiple = field_api_name; |
| | | let targets = ""; |
| | | //InquiryForm特殊处理 |
| | | if(multiple == "Product1__c" || multiple == "Request1__c"){ |
| | | if(multiple == "Product1__c"){ |
| | | targets = GetEleByClass(config.ApiPrefix+'_'+field_api_name).parentNode.children[1].rows[1].cells[2].innerText; |
| | | }else if(multiple == "Request1__c"){ |
| | | targets = GetEleByClass(config.ApiPrefix+'_'+field_api_name).parentNode.children[2].rows[1].cells[2].innerText; |
| | | }else{ |
| | | targets = GetEleByClass(config.ApiPrefix+'_'+field_api_name).parentNode.children[1].children[0].children[1].children[2].children[0].innerText; |
| | |
| | | createDiv.style.background = "#dddddd"; |
| | | createDiv.style.position = "absolute"; |
| | | parentNode.appendChild(createDiv); |
| | | parentNode.style.position = "relative"; |
| | | } |
| | | } |
| | | |
| | |
| | | PIData[Id] = temp; |
| | | }; |
| | | for(var i=0;i<tableDataStr.length;i++){ |
| | | if(tableDataStr[i].address.Contacts__r){ |
| | | if(tableDataStr[i].address.AWS_Data_Id__c){ |
| | | correct++; |
| | | AWSService.queryRepair(staticResource.queryUrl,tableDataStr[i].address.AWS_Data_Id__c,tableDataStr[i].address.Id,tableDataStr[i].address.Contacts__r.AWS_Data_Id__c,searchCallBack,staticResource.token); |
| | | } |
| | |
| | | <td align="left" style="vertical-align: inherit;border-width: 0px 1px 1px 0px;"> |
| | | <apex:outputText value="{!or.address.Detailed_Address__c}" /> |
| | | </td> |
| | | <td align="center" style="vertical-align: inherit;width:30px;"> |
| | | <!-- <td align="center" style="vertical-align: inherit;width:30px;"> |
| | | <apex:commandButton value=" 编辑 " onclick="onEditorJs('{!or.address.id}');return false;" style="background:#98c1fbf7;display:{!or.canEdit};"/> |
| | | </td> |
| | | </td> --> |
| | | <td align="center" style="vertical-align: inherit;width:30px;"> |
| | | <apex:commandButton value=" 复制 " onclick="onCopyJs('{!or.address.id}');return false;" style="background: #98c1fbf7;display:{!or.canCopy};"/> |
| | | </td> |
| | |
| | | </apex:outputPanel> |
| | | </apex:pageblocksection> |
| | | </apex:pageBlock> |
| | | |
| | | </div> |
| | | <div id="tab03"> |
| | | <apex:pageBlock id="oppBlock2" tabStyle="Report"> |
| | |
| | | </script> |
| | | </apex:pageBlock> |
| | | </div> |
| | | |
| | | </apex:form> |
| | | <apex:outputPanel id="checEventFrame"> |
| | | <script type="text/javascript"> |
| | |
| | | AWSService.query(staticResources.queryUrl, '{!AWSDataId}', queryBack, staticResources.token); |
| | | } |
| | | var queryBack = function queryBack(data) { |
| | | document.querySelector("[id='page:form:pageBlock:pageBlockSection:j_id1:0:j_id2']").innerHTML = data.object.telephone; |
| | | document.querySelector("[data-id='Telephone__c']").innerHTML = data.object.telephone; |
| | | document.querySelector("[data-id='ZipCode__c']").innerHTML = data.object.zipCode; |
| | | document.querySelector("[data-id='Detailed_Address__c']").innerHTML = data.object.detailedAddress; |
| | | |