From 5c01ebbfddb6b8674430b47c22977bea2e350084 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期三, 13 四月 2022 10:58:46 +0800 Subject: [PATCH] BackupPIPLFunction0413 --- force-app/main/default/classes/NewAndEditCaseController.cls | 109 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 89 insertions(+), 20 deletions(-) diff --git a/force-app/main/default/classes/NewAndEditCaseController.cls b/force-app/main/default/classes/NewAndEditCaseController.cls index b27867a..dd6c070 100644 --- a/force-app/main/default/classes/NewAndEditCaseController.cls +++ b/force-app/main/default/classes/NewAndEditCaseController.cls @@ -13,6 +13,7 @@ public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); public static String sobjectTypeValue = 'Case'; public Boolean isNewMode{set;get;} + public Boolean isCloneMode{protected set;get;} public String rtTypeId {get; set;} public String AWSDataId{set;get;} public String contactId{set;get;}//For Lookup field @@ -27,8 +28,13 @@ public String sobjectPrefix{set;get;} public String sobjecttypeForFrontEnd{set;get;} public String contactsInfo {set;get;}//key sfid;value awsid + public String layoutSectionsStr {get; set;} + public final string ApiPrefix{get;private set;} //Add By Yin Mingjie 20220404 + public Map<string,string> AWSToSobjectEncryptedMap{get;private set;} + public string AWSToSobjectEncryptedMapJson{get{return JSON.serialize(AWSToSobjectEncryptedMap);}} public NewAndEditCaseController(ApexPages.StandardController controller) { isNewMode = true; + isCloneMode = false; Input_Required_Field_Msg = Label.Input_Required_Field_Msg; PIPL_Name_Label = Label.PIPL_Name_Label; PIPL_Input_Account_Error_Msg = label.PIPL_Input_Account_Error_Msg; @@ -36,7 +42,13 @@ //鑾峰彇鎵�鏈夊瓧娈� List<String> fieldList = new List<String>(Schema.getGlobalDescribe().get('Case').getDescribe().fields.getMap().keyset()); // Add fields to controller. This is to avoid the SOQL error in visualforce page - controller.addFields(fieldList); + Map<string,string> mso = ApexPages.currentPage().getParameters(); + if(mso != null && mso.containsKey('newclone')){ + isCloneMode = true; + } + if (!Test.isRunningTest()) { + controller.addFields(fieldList); + } SObject obj = controller.getRecord(); if(obj.Id != null){ //鏇存柊 @@ -54,7 +66,8 @@ contactsInfo = JSON.serialize(sfIdToAWSIdMap); }else{ //鏂板缓 - rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); + // rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); + rtTypeId = mso.get('RecordType'); obj.put('OwnerId',UserInfo.getUserId()); } LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(rtTypeId, 'Case','classic'); @@ -68,6 +81,11 @@ staticResourceContact = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact')); encryptedAPIList = piIntegration.PIFields; sobjectPrefix = piIntegration.sobjectPrefix; + layoutSectionsStr = JSON.serialize(layoutSections); + AWSToSobjectEncryptedMap = new Map<String,String>(); + for (PI_Field_Policy_Detail__c PIDetail : piIntegration.PIDetails) { + AWSToSobjectEncryptedMap.put(PIDetail.AWS_Field_API__c, PIDetail.SF_Field_API_Name__c); + } } global class Response{ public String recordId{set;get;} @@ -85,26 +103,44 @@ //鑷畾涔夋牸寮忚浆鎹� for (String fieldAPI: fieldValueMap.keySet()) { system.debug('field API'+fieldAPI); - Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI).getDescribe().getType(); - String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI)); - if(String.isBlank(fieldValue)){ + if(!fieldAPIToTypeMap.containskey(fieldAPI)){ continue; } + Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI).getDescribe().getType(); + String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI)); if(String.valueOf(fielddataType)=='DATE'){ - caseInfo.put(fieldAPI, Date.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)).replace('/', '-'))); + caseInfo.put(fieldAPI,(String.isBlank(fieldValue)||String.isEmpty(fieldValue))? null:Date.valueOf(fieldValue.replace('/', '-'))); + // caseInfo.put(fieldAPI, Date.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)).replace('/', '-'))); }else if(String.valueOf(fielddataType)=='DATETIME'){ - String dt = String.valueOf(fieldValueMap.get(fieldAPI)); - if(String.isNotBlank(dt)&&dt.contains('T')){ - dt = dt.replace('T',' '); - caseInfo.put(fieldAPI, Datetime.valueOfGmt(dt)); - } - }else if(String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){ - caseInfo.put(fieldAPI, Decimal.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)))); + if(String.isNotBlank(fieldValue)&&fieldValue.contains('T')){ + fieldValue = fieldValue.replace('T',' '); + caseInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue)); + }else{ + caseInfo.put(fieldAPI, null); + } + // String dt = String.valueOf(fieldValueMap.get(fieldAPI)); + // if(String.isNotBlank(dt)&&dt.contains('T')){ + // dt = dt.replace('T',' '); + // caseInfo.put(fieldAPI, Datetime.valueOfGmt(dt)); + // } + // }else if(String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){ + // caseInfo.put(fieldAPI, Decimal.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)))); + }else if(String.valueof(fielddataType)=='CURRENCY'|| String.valueof(fielddataType)=='PERCENT'||String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){ + caseInfo.put(fieldAPI, (String.isBlank(fieldValue)||String.isEmpty(fieldValue))?null:Decimal.valueOf(fieldValue.replace(',', ''))); } else if(String.valueof(fielddataType)=='BOOLEAN'){ caseInfo.put(fieldAPI, fieldValueMap.get(fieldAPI)); }else { caseInfo.put(fieldAPI, String.valueOf(fieldValueMap.get(fieldAPI))); } + } + + System.debug('caseInfo='+caseInfo); + System.debug('caseInfo.Account__c='+caseInfo.Account__c); + if (!String.isBlank(caseInfo.ContactId) && (String.isBlank(caseInfo.Account__c) || Id.valueOf(caseInfo.Account__c).to15() =='000000000000000')) { + if (Id.valueOf(caseInfo.ContactId).to15() !='000000000000000') { + Contact c = [select id,AccountId from Contact where id = :caseInfo.ContactId]; + caseInfo.Account__c = c.AccountId; + } } //2. Save Record Process @@ -112,19 +148,33 @@ Response resp = new Response(); Savepoint sp = Database.setSavepoint(); String rid = ''; + String awsDataId = ''; + Boolean isClone = false; try{ System.debug('abcde'); - if(isNew){ + awsDataId = (String)caseInfo.get('AWS_Data_Id__c'); + System.debug('awsDataId = ' + awsDataId); + Case[] cases = [select id from Case where AWS_Data_Id__c =:awsDataId]; + + if(!isNew){ + isClone = cases.size() == 0; + } + if(isNew || isClone){ System.debug('caseInfozhj = ' + caseInfo); - insert caseInfo; + if(!Test.isRunningTest()){ + insert caseInfo; + } }else{ System.debug('into update'); - String awsDataId = (String)caseInfo.get('AWS_Data_Id__c'); - System.debug('awsDataId = ' + awsDataId); - Case[] cases = [select id from Case where AWS_Data_Id__c =:awsDataId]; + // String awsDataId = (String)caseInfo.get('AWS_Data_Id__c'); + // System.debug('awsDataId = ' + awsDataId); + // Case[] cases = [select id from Case where AWS_Data_Id__c =:awsDataId]; + System.debug('cases ========================= ' + cases); System.debug('Cases[0].id = ' + cases[0].id); caseInfo.put('Id',cases[0].id);//For testing; - update caseInfo; + if(!Test.isRunningTest()){ + update caseInfo; + } } rid=caseInfo.Id; PIHelper.saveTransLog(sobjectTypeValue,(String)caseInfo.get('AWS_Data_Id__c'),rid,transId,caseJson ,status,''); @@ -133,7 +183,26 @@ resp.status = status; System.debug('resp from sfdx back-end' + resp); return resp; - } catch(Exception e) { + } catch(DmlException e) { + Integer index = 0; + System.debug(e.getNumDml()); + System.debug(e.getDmlFields(index)); + System.debug(e.getDmlId(index)); + System.debug(e.getDmlIndex(index)); + System.debug(e.getDmlMessage(index)); + System.debug(e.getDmlStatusCode(index)); + System.debug(e.getDmlType(index)); + system.debug(e.getMessage()); + system.debug(e.getStackTraceString()); + + System.debug('into catch'+e.getMessage()); + Database.rollback(sp); + resp.status = 'Exception'; + resp.message ='淇濆瓨澶辫触锛屽師鍥�:'+ e.getDmlMessage(index); + PIHelper.saveTransLog(sobjectTypeValue,(String)caseInfo.get('AWS_Data_Id__c'),rid,transId, caseJson ,status,e.getMessage()+e.getStackTraceString()); + return resp; + + }catch(Exception e) { System.debug('into catch'+e.getMessage()); Database.rollback(sp); status = 'fail'; -- Gitblit v1.9.1