From ea5686cada5a3e63edaa0d3e8c2db8def4f9ff31 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期一, 11 四月 2022 11:52:41 +0800 Subject: [PATCH] PIPLCloneButton --- force-app/main/default/classes/NewAndEditBaseController.cls | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-) diff --git a/force-app/main/default/classes/NewAndEditBaseController.cls b/force-app/main/default/classes/NewAndEditBaseController.cls index 1e854ce..6474e93 100644 --- a/force-app/main/default/classes/NewAndEditBaseController.cls +++ b/force-app/main/default/classes/NewAndEditBaseController.cls @@ -6,6 +6,7 @@ public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); public String sobjectTypeValue {private set; get;} public Boolean isNewMode{set;get;} + public Boolean isCloneMode{protected set;get;} public String rtTypeId {get; set;} public String AWSDataId{set;get;} public String CurrentUserId{private set;get;} @@ -53,7 +54,7 @@ public List<String> LookUpOverrideFields{get;private set;} public string LookUpOverrideFieldsMapJson{get; set;} public string recordId{get;private set;} - + public NewAndEditBaseController(){ ApiPrefix = 'PIBackApi'; AWSToSobjectNonEncryptedMap = new Map<string,string>(); @@ -71,8 +72,12 @@ system.debug('obj='+sobjectTypeValue); isNewMode = true; + isCloneMode = false; List<Sobject> lso = Database.query('select id from RecordType where SobjectType = :sobjectTypeValue'); - + Map<string,string> mso = ApexPages.currentPage().getParameters(); + if(mso != null && mso.containsKey('newclone')){ + isCloneMode = true; + } if(obj.Id != null){ recordId = obj.Id; isNewMode = false; @@ -187,13 +192,14 @@ System.debug('sobjectTypeValue:'+sobjectTypeValue+' Info:' + JSON.serialize(leadJson)); System.debug('json length='+leadJson.length()); System.debug('leadJson---------'+leadJson); + System.debug('isNew---------'+isNew); //1. Prepare the payload for Lead Schema.SObjectType leadSchema = schemaMap.get(sobjectTypeValue); Map<String, Schema.SObjectField> fieldAPIToTypeMap = leadSchema.getDescribe().fields.getMap(); Map<String,Object> fieldValueMap = (Map<String,Object>)JSON.deserializeUntyped(leadJson); - + Boolean isClone = false; //2. Save Record Process String status = 'success'; Response resp = new Response(); @@ -201,7 +207,7 @@ Savepoint sp = Database.setSavepoint(); Sobject leadInfo = sobj; try{ - System.debug('abcde'); + for (String fieldAPI: fieldValueMap.keySet()) { system.debug('field API='+fieldAPI); if(!fieldAPIToTypeMap.containskey(fieldAPI)){ @@ -234,22 +240,28 @@ } system.debug('for (String fieldAPI: fieldValueMap.keySet()) end'); + awsDataId = (String)leadInfo.get('AWS_Data_Id__c'); + if (string.isBlank(awsDataId)) { + throw new DMLException('鏇存柊鏃禔WS_Data_Id__c涓嶈兘涓虹┖'); + } + System.debug('awsDataId = ' + awsDataId); + Sobject[] sobjects = Database.query('select id from '+sobjectTypeValue+' where AWS_Data_Id__c =:awsDataId'); - if(isNew){ + + if(!isNew){ + isClone = sobjects.size() == 0; + } + System.debug('isNew---------'+isNew); + + if(isNew || isClone){ System.debug('leadInfozhj = ' + leadInfo); if(!Test.isRunningTest()){ insert leadInfo; } }else{ System.debug('into update'); - awsDataId = (String)leadInfo.get('AWS_Data_Id__c'); - if (string.isBlank(awsDataId)) { - throw new DMLException('鏇存柊鏃禔WS_Data_Id__c涓嶈兘涓虹┖'); - } - System.debug('awsDataId = ' + awsDataId); - Sobject[] leads = Database.query('select id from '+sobjectTypeValue+' where AWS_Data_Id__c =:awsDataId'); - System.debug('leads[0].id = ' + leads[0].id); - leadInfo.put('Id',leads[0].id);//For testing; + System.debug('sobjects[0].id = ' + sobjects[0].id); + leadInfo.put('Id',sobjects[0].id);//For testing; if(!Test.isRunningTest()){ update leadInfo; } -- Gitblit v1.9.1