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/NewRepairController.cls | 63 ++++++++++++++++++++++++++----- 1 files changed, 52 insertions(+), 11 deletions(-) diff --git a/force-app/main/default/classes/NewRepairController.cls b/force-app/main/default/classes/NewRepairController.cls index e0391de..1126822 100644 --- a/force-app/main/default/classes/NewRepairController.cls +++ b/force-app/main/default/classes/NewRepairController.cls @@ -4,6 +4,7 @@ *@Date: 2022-03-10 10:26:47 */ global without sharing class NewRepairController { + public String layoutSectionsStr {get; set;}//for dynamic add readonly attribute public List <LayoutDescriberHelper.LayoutSection > layoutSections{set;get;} public String awsToken{set;get;} public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); @@ -35,7 +36,9 @@ //鑾峰彇鎵�鏈夊瓧娈� List<String> fieldList = new List<String>(Schema.getGlobalDescribe().get('Repair__c').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){ //鏇存柊 @@ -47,6 +50,17 @@ ContactAWSDataId = String.valueOf(repairData.Contact_AWS_Data_Id__c); }else{ //鏂板缓 + Map<string,string> mso = ApexPages.currentPage().getParameters(); + system.debug('mso='+mso); + if(mso.containsKey('00N10000006P6SM')){ + controller.getRecord().put('SalesOfficeCode_selection__c',mso.get('00N10000006P6SM')); + } + if(mso.containsKey('00N10000002FH86')){ + controller.getRecord().put('On_site_repair__c',mso.get('00N10000002FH86')); + } + if(mso.containsKey('00N10000006P6Rn')){ + controller.getRecord().put('work_location_select__c',mso.get('00N10000006P6Rn')); + } rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); if(String.isBlank(rtTypeId)||String.isEmpty(rtTypeId)){ List<RecordType> rtList = new List<RecordType>([select Id,DeveloperName from RecordType where SobjectType ='Repair__c' and DeveloperName ='Repair']); @@ -55,6 +69,7 @@ } LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(rtTypeId, 'Repair__c','classic'); layoutSections = LayoutWrapperValue.layoutSections; + layoutSectionsStr = JSON.serialize(layoutSections); //for dynamic add readonly attribute List<String> requiredFieldAPIList = LayoutWrapperValue.requiredFieldAPIList; Map<String,String> fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap; requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList); @@ -86,21 +101,27 @@ //鑷畾涔夋牸寮忚浆鎹� 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'){ - repairInfo.put(fieldAPI, Date.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)).replace('/', '-'))); + repairInfo.put(fieldAPI,(String.isBlank(fieldValue)||String.isEmpty(fieldValue))? null:Date.valueOf(fieldValue.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',' '); - repairInfo.put(fieldAPI, Datetime.valueOfGmt(dt)); - } + if(String.isNotBlank(fieldValue)&&fieldValue.contains('T')){ + fieldValue = fieldValue.replace('T',' '); + repairInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue)); + }else if(String.isNotBlank(fieldValue)) { + fieldValue = fieldValue.replace('/', '-') + ':00'; + System.debug('fieldValue = ' + fieldValue); + repairInfo.put(fieldAPI, Datetime.valueOf(fieldValue)); + }else{ + repairInfo.put(fieldAPI, null); + } + }else if(String.valueOf(fielddataType)=='PERCENT'||String.valueOf(fielddataType)=='CURRENCY'||String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){ - repairInfo.put(fieldAPI, Decimal.valueOf(String.valueOf(fieldValueMap.get(fieldAPI)))); + repairInfo.put(fieldAPI, (String.isBlank(fieldValue)||String.isEmpty(fieldValue))?null:Decimal.valueOf(fieldValue.replace(',', ''))); } else if(String.valueof(fielddataType)=='BOOLEAN'){ repairInfo.put(fieldAPI, fieldValueMap.get(fieldAPI)); }else { @@ -135,6 +156,26 @@ System.debug('resp from sfdx back-end' + resp); return resp; + } catch(DmlException e) { + rid=repairInfo.Id; + 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,rid,transId, (String)repairInfo.get('AWS_Data_Id__c'),repairJson ,status,''); + return resp; + } catch(Exception e) { System.debug('into catch'+e.getMessage()); Database.rollback(sp); -- Gitblit v1.9.1