From f5a94e721ae5a26f817f0df75065b64f1f192eb3 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期一, 28 三月 2022 21:43:51 +0800 Subject: [PATCH] PIPLFunctionDeploy0328 --- force-app/main/default/classes/NewAndEditCaseController.cls | 63 +++++++++++++++++++++++++------ 1 files changed, 50 insertions(+), 13 deletions(-) diff --git a/force-app/main/default/classes/NewAndEditCaseController.cls b/force-app/main/default/classes/NewAndEditCaseController.cls index a1a69fb..f390da1 100644 --- a/force-app/main/default/classes/NewAndEditCaseController.cls +++ b/force-app/main/default/classes/NewAndEditCaseController.cls @@ -37,7 +37,9 @@ //鑾峰彇鎵�鏈夊瓧娈� 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); + if (!Test.isRunningTest()) { + controller.addFields(fieldList); + } SObject obj = controller.getRecord(); if(obj.Id != null){ //鏇存柊 @@ -87,26 +89,41 @@ //鑷畾涔夋牸寮忚浆鎹� 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.Account__c='+caseInfo.Account__c); + if (!String.isBlank(caseInfo.ContactId) && (String.isBlank(caseInfo.Account__c) || Id.valueOf(caseInfo.Account__c).to15() =='000000000000000')) { + Contact c = [select id,AccountId from Contact where id = :caseInfo.ContactId]; + caseInfo.Account__c = c.AccountId; } //2. Save Record Process @@ -124,6 +141,7 @@ 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; @@ -135,7 +153,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