From 9b197b7fac92278fb591ea8f4942c7d5687cb5ce Mon Sep 17 00:00:00 2001
From: 李金换 <lijinhuan@prec-tech.com>
Date: 星期一, 28 三月 2022 18:01:22 +0800
Subject: [PATCH] LJPH-C8FB4P【委托】配合PBI设备覆盖率的数据准备0328
---
force-app/main/default/classes/LayoutDescriberHelper.cls | 82 ++++++++++++++++++++++++++++++++++++----
1 files changed, 73 insertions(+), 9 deletions(-)
diff --git a/force-app/main/default/classes/LayoutDescriberHelper.cls b/force-app/main/default/classes/LayoutDescriberHelper.cls
index 8231dd8..806dd48 100644
--- a/force-app/main/default/classes/LayoutDescriberHelper.cls
+++ b/force-app/main/default/classes/LayoutDescriberHelper.cls
@@ -10,11 +10,29 @@
public class LayoutDescriberHelper {
public static String urlPrefixToUse {get;set;}
- public static Set<String> ConcatenationNameSType = new Set<String>{'Lead','Contact'};
+ public static List<String> requiredFieldAPIList{set;get;}
+ public static Map<String,String> fieldAPIToLabelMap{set;get;}
+ public static Set<String> CaseWebFields = new Set<String>{'SuppliedCompany','SuppliedName','SuppliedEmail','SuppliedPhone'};
+ public static Set<String> ConcatenationNameSType = new Set<String>{'Lead','Contact'};
+ public static LayoutWrapper describeSectionWithFieldsWrapper(Id recordTypeId, String objectType,String userMode){
+ if(String.isEmpty(recordTypeId)){
+ //Assign default record type for sobject
+ recordTypeId = getDefaultRecordType(objectType);
+ }
+ List<LayoutSection> layoutSections = describeSectionWithFields(recordTypeId,objectType,userMode);
+ LayoutWrapper layoutWrapperValue = new LayoutWrapper();
+ layoutWrapperValue.layoutSections = layoutSections;
+ layoutWrapperValue.requiredFieldAPIList = requiredFieldAPIList;
+ layoutWrapperValue.fieldAPIToLabelMap = fieldAPIToLabelMap;
+ system.debug('required API List:'+JSON.serialize(requiredFieldAPIList));
+ return layoutWrapperValue;
+ }
public static List<LayoutSection> describeSectionWithFields(Id recordTypeId, String objectType,String userMode){
system.debug('record type id ===>'+ recordTypeId+' object type===>'+objectType + ' userMode===>'+userMode);
List<LayoutSection> layoutSections;
Map<String,List<LayoutField>> layoutFields;
+ requiredFieldAPIList = new List<String>();
+ fieldAPIToLabelMap = new Map<String,String>();
layoutSections = new List<LayoutSection>();
String theRespBody = getLayoutSchema(recordTypeId, objectType,userMode);
Map<String, Object> layoutSection = (Map<String, Object>) JSON.deserializeUntyped(theRespBody);
@@ -87,21 +105,35 @@
lf.isPlaceHolder = placeholderF;
lf.editableField = isEditable;
lf.fieldAPI = fieldLabelPrefix+addressType;
+
lf.fieldLabel = fieldLabelPrefix+' '+addressType;
- lf.fieldType = 'string';
+ lf.fieldType = 'string';
if(ls.Name != '' || layoutSections.size() == 1){
ls.layoutFields.add(lf);
}else if(layoutSections.size() - 2 >= 0){
layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf);
- }
+ }
+ if(lf.isRequired){
+ system.debug(lf.fieldAPI+' is required');
+ requiredFieldAPIList.add(lf.fieldAPI);
+ }
+ if(string.isBlank(lf.fieldAPI)){
+ system.debug('==================================2');
+ continue;
+ }else{
+ fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel);
+ }
}
continue;
}
if(userMode == 'classic' && apiName == 'Name' && ConcatenationNameSType.contains(objectType)){
- List<String> nameDetail = new List<String>{'LastName'};
+ List<String> nameDetail = new List<String>{'Salutation','LastName'};
for(String nameField:nameDetail){
LayoutField lf = new LayoutField();
lf.isRequired = (Boolean)fields.get('required');
+ if(nameField == 'Salutation'){
+ lf.isRequired = false;
+ }
lf.isPlaceHolder = placeholderF;
lf.editableField = isEditable;
lf.fieldAPI = nameField;
@@ -111,8 +143,21 @@
ls.layoutFields.add(lf);
}else if(layoutSections.size() - 2 >= 0){
layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf);
- }
+ }
+ if(lf.isRequired){
+ system.debug(lf.fieldAPI+' is required');
+ requiredFieldAPIList.add(lf.fieldAPI);
+ }
+ if(string.isBlank(lf.fieldAPI)){
+ system.debug('==================================3');
+ continue;
+ }else{
+ fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel);
+ }
}
+ continue;
+ }
+ if(objectType == 'Case' && CaseWebFields.contains(apiName)){
continue;
}
LayoutField lf = new LayoutField();
@@ -126,7 +171,18 @@
ls.layoutFields.add(lf);
}else if(layoutSections.size() - 2 >= 0){
layoutSections.get(layoutSections.size() - 2).layoutFields.add(lf);
- }
+ }
+ if(lf.isRequired){
+ system.debug(lf.fieldAPI+' is required');
+ requiredFieldAPIList.add(lf.fieldAPI);
+ }
+ if(string.isBlank(lf.fieldAPI)){
+ system.debug('==================================1');
+ continue;
+ }else{
+ fieldAPIToLabelMap.put(lf.fieldAPI,lf.fieldLabel);
+ }
+
priorFieldLayoutAdded = true;
}else
priorFieldLayoutAdded = false;
@@ -138,6 +194,7 @@
}
}
System.debug('Layout Section Result:'+JSon.serialize(layoutSections));
+ system.debug('required API List:'+JSON.serialize(requiredFieldAPIList));
return layoutSections;
}
public static String getUrlPrefix(){
@@ -159,6 +216,7 @@
req.setMethod('GET');
if(userMode =='lightning'){
req.setEndPoint('callout:SF_Rest_API'+urlPost);
+ system.debug('callout:SF_Rest_API'+urlPost);
}else if(userMode == 'classic'){
req.setEndpoint(urlForClassic);
req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid());
@@ -169,8 +227,10 @@
return resp.getBody();
}
- public static Id getDefaultRecordType(SObject obj) {
- Schema.DescribeSObjectResult describeResult = obj.getsObjectType().getDescribe();
+ public static Id getDefaultRecordType(String ObjectName) {
+ Map<String, Schema.SObjectType> GlobalDescribeMap = Schema.getGlobalDescribe();
+ Schema.SObjectType obj = GlobalDescribeMap.get(ObjectName);
+ Schema.DescribeSObjectResult describeResult = obj.getDescribe();
List<Schema.RecordTypeInfo> rtInfos = describeResult.getRecordTypeInfos();
for(Schema.RecordTypeInfo rtInfo : rtInfos) {
if(rtInfo.DefaultRecordTypeMapping) {
@@ -179,7 +239,11 @@
}
return null;
}
-
+ public class LayoutWrapper{
+ @AuraEnabled public List<LayoutSection> layoutSections{set;get;}
+ @AuraEnabled public List<String> requiredFieldAPIList{set;get;}
+ @AuraEnabled public Map<String,String> fieldAPIToLabelMap{set;get;}
+ }
public class LayoutSection{
@AuraEnabled public boolean useHeader {get;set;}
@AuraEnabled public String name {get;set;}
--
Gitblit v1.9.1