From af7b716a60d889acea95560abba0e46eee008b8f Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期三, 05 七月 2023 13:54:50 +0800
Subject: [PATCH] backup0705

---
 force-app/main/default/classes/NewAndEditLeadController.cls |  751 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 562 insertions(+), 189 deletions(-)

diff --git a/force-app/main/default/classes/NewAndEditLeadController.cls b/force-app/main/default/classes/NewAndEditLeadController.cls
index c697da7..b36e1c7 100644
--- a/force-app/main/default/classes/NewAndEditLeadController.cls
+++ b/force-app/main/default/classes/NewAndEditLeadController.cls
@@ -3,201 +3,574 @@
  * Created Date: 01/19/2022
  * Purpose: Utility class for describe layouts
  * Test Class: NewAndEditLeadController
- * History: 
+ * History:
  *      01/19/2022 - Bubba Li - Initial Code.
- * 
+ *
  * */
 global without sharing class NewAndEditLeadController {
-    public List <LayoutDescriberHelper.LayoutSection > layoutSections{set;get;}
-    public String awsToken{set;get;}
-    public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
-    public static String sobjectTypeValue = 'Lead';
-    public Boolean isNewMode{set;get;}
-    public String rtTypeId {get; set;}
-    public String AWSDataId{set;get;}
-    public String AWSDataIdInquiryForm{set;get;}
-    public String contactId{set;get;}//For Lookup field
-    public List<String> encryptedAPIList{set;get;}
-    public String staticResource {get; set;}
-    public String staticResourceContact {get; set;}
-    public String staticResourceInquiryForm{get; set;}
-    public String requiredFieldAPIListStr {get; set;}
-    public String fieldAPIToLabelMapStr {get; set;}
-    public String Input_Required_Field_Msg{set;get;}
-    public String PIPL_Name_Label{set;get;}
-    public String PIPL_Input_Account_Error_Msg{set;get;}
-    public String sobjectPrefix{set;get;}
-    public String sobjecttypeForFrontEnd{set;get;}
-    public String contactsInfo {set;get;}//key sfid;value awsid
-    public Inquiry_form__c ifc{get; private set;}
-    public String contactDataId{get; set;}
-    public String layoutSectionsStr {get; set;}
-    public String isDecryptContact {get; set;}
-    public NewAndEditLeadController(ApexPages.StandardController controller) {
-        isDecryptContact = '0';
-        isNewMode = true;
-        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;
-        sobjecttypeForFrontEnd = sobjectTypeValue;
-        //鑾峰彇鎵�鏈夊瓧娈�
-        List<String> fieldList = new List<String>(Schema.getGlobalDescribe().get('Lead').getDescribe().fields.getMap().keyset());  
-        // Add fields to controller. This is to avoid the SOQL error in visualforce page
-        controller.addFields(fieldList);        
-        SObject obj = controller.getRecord();    
-        
-        if(ApexPages.currentPage().getParameters().get('CF00N1000000962np_lkid') != null){
-            System.debug('CF00N1000000962np_lkid');
-            //浜у搧鍜ㄨ鍗曡繃鏉ョ殑
-            String InquiryFormId = ApexPages.currentPage().getParameters().get('CF00N1000000962np_lkid');
-            ifc = [select Id,AWS_Data_Id__c,Contact_Name__c,Contact_Id__c,Hospital_Name__c,Hospital_ID__c,Department_Class__c,
-            Department_ID__c,Opp_Name_Search__c,Opp_Name_Search_ID__c,Campaign__c,
-            Campaign_ID__c,Name,Cancel_Reason__c,Phone__c,Email__c,Last_Name__c,LeadSource__c,Opportunity_Division__c,Request1__c,
-            Urgent__c from Inquiry_form__c where id = :InquiryFormId];
-            System.debug('ifc = ' + ifc);
-            if(ifc.Contact_Id__c !=null && ifc.Contact_Id__c != ''){
-                Contact c = [select AWS_Data_Id__c from Contact where id = :ifc.Contact_Id__c];
-                contactDataId = c.AWS_Data_Id__c;
-            }
-            AWSDataIdInquiryForm = ifc.AWS_Data_Id__c;
-            System.debug('ifc = ' + ifc);
-            rtTypeId = ApexPages.currentPage().getParameters().get('RecordType');
-            obj.put('OwnerId',UserInfo.getUserId());
-        }else if(obj.Id != null){
-            //鏇存柊
-            isNewMode = false;
-            Lead leadData = [select Id,RecordTypeId,AWS_Data_Id__c,Contact_Name__r.Id,Contact_Name__r.AWS_Data_Id__c from Lead where id =: obj.Id];
-            rtTypeId = leadData.RecordTypeId;
-            AWSDataId = leadData.AWS_Data_Id__c;
-            Map<String,String> sfIdToAWSIdMap = new Map<String,String>();
-            if(leadData.Contact_Name__r.Id != null){
-                sfIdToAWSIdMap.put(String.valueof(leadData.Contact_Name__r.Id).subString(0,15),leadData.Contact_Name__r.AWS_Data_Id__c);
-            }
-            contactsInfo = JSON.serialize(sfIdToAWSIdMap);
-        }else{
-            //鐪嬮摼鎺ヤ腑鏈夋棤甯﹁繃鏉ョ殑鍙傛暟(瀹㈡埛浜哄憳)
-            Map<string,string> mso = ApexPages.currentPage().getParameters();
-            for(String key : mso.keySet()){
-                System.debug('key=' + key + ',value=' + mso.get(key));
-            }
-            //鑱旂郴浜�
-            if(mso.containsKey('CF00N10000006ps6f_lkid')){
-                isDecryptContact = '1';
-                String contactId = mso.get('CF00N10000006ps6f_lkid');
-                //鏌ヨAWS_Data_Id__c
-                Contact c = [select AWS_Data_Id__c from Contact where id=:contactId];
-                if (c != null) {
-                    contactDataId = c.AWS_Data_Id__c;
-                }
-                //鏌ヨ鎴樼暐绉戝鍒嗙被
-                List<Contact> cs = [select Account.Department_Class__c from Contact where id=:contactId];
-                if(cs.size()>0){
-                    controller.getRecord().put('Department_Class__c',cs[0].Account.Department_Class__c);
-                }
-                controller.getRecord().put('Contact_Name__c',mso.get('CF00N10000006ps6f_lkid'));
-            }
-            //鍖婚櫌鍚�
-            if(mso.containsKey('CF00N10000002CvC5_lkid')){
-                controller.getRecord().put('Hospital_Name__c',mso.get('CF00N10000002CvC5_lkid'));
-            }
-            //鎴樼暐绉戝CF00N10000006qNtt_lkid 
-            // if(mso.containsKey('CF00N10000006qNtt_lkid ')){
-            //     controller.getRecord().put('Department_Class__c',mso.get('CF00N10000006qNtt_lkid '));
-            // }
-            rtTypeId = ApexPages.currentPage().getParameters().get('RecordType');
-            obj.put('OwnerId',UserInfo.getUserId());
+  public List<LayoutDescriberHelper.LayoutSection> layoutSections { get; set; }
+  public String awsToken { get; set; }
+  public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
+  public static String sobjectTypeValue = 'Lead';
+  public Boolean isNewMode { get; set; }
+  public Boolean isCloneMode { get; protected set; }
+  public String rtTypeId { get; set; }
+  public String AWSDataId { get; set; }
+  public String AWSDataIdInquiryForm { get; set; }
+  public String contactId { get; set; } //For Lookup field
+  public List<String> encryptedAPIList { get; set; }
+  public String staticResource { get; set; }
+  public String staticResourceContact { get; set; }
+  public String staticResourceInquiryForm { get; set; }
+  public String requiredFieldAPIListStr { get; set; }
+  public String fieldAPIToLabelMapStr { get; set; }
+  public String Input_Required_Field_Msg { get; set; }
+  public String PIPL_Name_Label { get; set; }
+  public String PIPL_Input_Account_Error_Msg { get; set; }
+  public String sobjectPrefix { get; set; }
+  public String sobjecttypeForFrontEnd { get; set; }
+  public String contactsInfo { get; set; } //key sfid;value awsid
+  public Inquiry_form__c ifc { get; private set; }
+  public String contactDataId { get; set; }
+  public String layoutSectionsStr { get; set; }
+  public String isDecryptContact { get; set; }
+  public final string ApiPrefix { get; private set; } //Add By Li Jun 20220403
+  public Map<string, string> AWSToSobjectEncryptedMap { get; private set; }
+  public string AWSToSobjectEncryptedMapJson {
+    get {
+      return JSON.serialize(AWSToSobjectEncryptedMap);
+    }
+  }
+  public String LeadCreatedDate { get; set; } // XLIU-CFE8M7 20220624 ssm
+  public String VLookUpFieldsJson { get; private set; }
+  //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 start
+  public String staticResourceV2 { get; set; }
+  //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 end
+
+  public NewAndEditLeadController(ApexPages.StandardController controller) {
+    ApiPrefix = 'PIBackApi';
+    isDecryptContact = '0';
+    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;
+    sobjecttypeForFrontEnd = sobjectTypeValue;
+    Map<string, string> mso = ApexPages.currentPage().getParameters();
+    if (mso != null && mso.containsKey('newclone')) {
+      isCloneMode = true;
+    }
+    //鑾峰彇鎵�鏈夊瓧娈�
+    List<String> fieldList = new List<String>(
+      Schema.getGlobalDescribe()
+        .get('Lead')
+        .getDescribe()
+        .fields.getMap()
+        .keyset()
+    );
+    // Add fields to controller. This is to avoid the SOQL error in visualforce page
+    if (!Test.isRunningTest()) {
+      controller.addFields(fieldList);
+    }
+    SObject obj = controller.getRecord();
+
+    // XLIU-CFE8M7 20220624 ssm
+    this.LeadCreatedDate = obj.get('CreatedDate') != null
+      ? Date.newInstance(
+            ((Datetime) obj.get('CreatedDate')).year(),
+            ((Datetime) obj.get('CreatedDate')).month(),
+            ((Datetime) obj.get('CreatedDate')).day()
+          )
+          .format()
+      : Date.today().format();
+    // this.LeadCreatedDate = Date.today().format();
+
+    if (
+      ApexPages.currentPage().getParameters().get('CF00N1000000962np_lkid') !=
+      null
+    ) {
+      System.debug('CF00N1000000962np_lkid');
+      //浜у搧鍜ㄨ鍗曡繃鏉ョ殑
+      String InquiryFormId = ApexPages.currentPage()
+        .getParameters()
+        .get('CF00N1000000962np_lkid');
+      ifc = [
+        SELECT
+          Id,
+          AWS_Data_Id__c,
+          Contact_Name__c,
+          Contact_Id__c,
+          Hospital_Name__c,
+          Hospital_ID__c,
+          Department_Class__c,
+          Department_ID__c,
+          Opp_Name_Search__c,
+          Opp_Name_Search_ID__c,
+          Campaign__c,
+          Campaign_ID__c,
+          Name,
+          Cancel_Reason__c,
+          Phone__c,
+          Email__c,
+          Last_Name__c,
+          LeadSource__c,
+          Opportunity_Division__c,
+          Request1__c,
+          Urgent__c,
+          Inquiry_Num__c,
+          Product_Owner__c
+        FROM Inquiry_form__c
+        WHERE id = :InquiryFormId
+      ];
+      System.debug('ifc = ' + ifc);
+      if (ifc.Contact_Id__c != null && ifc.Contact_Id__c != '') {
+        Contact c = [
+          SELECT AWS_Data_Id__c
+          FROM Contact
+          WHERE id = :ifc.Contact_Id__c
+        ];
+        contactDataId = c.AWS_Data_Id__c;
+      }
+      AWSDataIdInquiryForm = ifc.AWS_Data_Id__c;
+      System.debug('ifc = ' + ifc);
+      rtTypeId = ApexPages.currentPage().getParameters().get('RecordType');
+      obj.put('OwnerId', UserInfo.getUserId());
+      obj.put('Inquiry_Num__c', ifc.Inquiry_Num__c); // 20220413 SWAG-CBUB2W you
+      obj.put('owner_not_automatically_update__c', ifc.Product_Owner__c);
+      controller.getRecord().put('LeadSource', ifc.LeadSource__c);
+      // controller.getRecord().put('Lead_Inquiry_form__c', ifc.Id);
+    } else if (obj.Id != null) {
+      //鏇存柊
+      isNewMode = false;
+      Lead leadData = [
+        SELECT
+          Id,
+          RecordTypeId,
+          AWS_Data_Id__c,
+          Contact_Name__r.Id,
+          Contact_Name__r.AWS_Data_Id__c
+        FROM Lead
+        WHERE id = :obj.Id
+      ];
+      rtTypeId = leadData.RecordTypeId;
+      AWSDataId = leadData.AWS_Data_Id__c;
+      Map<String, String> sfIdToAWSIdMap = new Map<String, String>();
+      if (leadData.Contact_Name__r.Id != null) {
+        sfIdToAWSIdMap.put(
+          String.valueof(leadData.Contact_Name__r.Id).subString(0, 15),
+          leadData.Contact_Name__r.AWS_Data_Id__c
+        );
+      }
+      contactsInfo = JSON.serialize(sfIdToAWSIdMap);
+    } else {
+      //鐪嬮摼鎺ヤ腑鏈夋棤甯﹁繃鏉ョ殑鍙傛暟(瀹㈡埛浜哄憳)
+      // Map<string,string> mso = ApexPages.currentPage().getParameters();
+      for (String key : mso.keySet()) {
+        System.debug('key=' + key + ',value=' + mso.get(key));
+      }
+      //鑱旂郴浜�
+      if (mso.containsKey('CF00N10000006ps6f_lkid')) {
+        isDecryptContact = '1';
+        String contactId = mso.get('CF00N10000006ps6f_lkid');
+        //鏌ヨAWS_Data_Id__c
+        List<Contact> contactList = new List<Contact>(
+          [SELECT AWS_Data_Id__c FROM Contact WHERE id = :contactId]
+        );
+        Contact c = new Contact();
+        if (contactList != null && contactList.size() > 0) {
+          c = contactList[0];
         }
-        LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(rtTypeId, 'Lead','classic');
-        layoutSections = LayoutWrapperValue.layoutSections;
-        List<String> requiredFieldAPIList = LayoutWrapperValue.requiredFieldAPIList;
-        Map<String,String> fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap;
-        requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList);
-        fieldAPIToLabelMapStr = JSON.serialize(fieldAPIToLabelMap);
-        PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo('Lead');
-        staticResource = JSON.serialize(piIntegration);
-        staticResourceContact = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact'));
-        staticResourceInquiryForm = JSON.serialize(PIHelper.getPIIntegrationInfo('Inquiry_form__c'));
-        encryptedAPIList = piIntegration.PIFields;
-        sobjectPrefix = piIntegration.sobjectPrefix;
-        layoutSectionsStr = JSON.serialize(layoutSections);
+        if (c != null && c.AWS_Data_Id__c != '') {
+          contactDataId = c.AWS_Data_Id__c;
+        }
+        //鏌ヨ鎴樼暐绉戝鍒嗙被
+        List<Contact> cs = [
+          SELECT Account.Department_Class__c
+          FROM Contact
+          WHERE id = :contactId
+        ];
+        if (cs.size() > 0) {
+          controller.getRecord()
+            .put('Department_Class__c', cs[0].Account.Department_Class__c);
+        }
+        controller.getRecord()
+          .put('Contact_Name__c', mso.get('CF00N10000006ps6f_lkid'));
+      }
+      //鍖婚櫌鍚�
+      if (mso.containsKey('CF00N10000002CvC5_lkid')) {
+        controller.getRecord()
+          .put('Hospital_Name__c', mso.get('CF00N10000002CvC5_lkid'));
+        //閫氳繃鍖婚櫌id鏌ヨ鎴樼暐绉戝鍒嗙被
+        String hospitalId = mso.get('CF00N10000002CvC5_lkid');
+        List<Account> hospitalAccount = [
+          SELECT Department_Class__c
+          FROM Account
+          WHERE Id = :hospitalId
+        ];
+        if (hospitalAccount.size() > 0) {
+          List<Account> departmentAccount = [
+            SELECT Id
+            FROM Account
+            WHERE Id = :hospitalAccount[0].Department_Class__c
+          ];
+          if (departmentAccount.size() > 0) {
+            System.debug('Department_Class__c = ' + departmentAccount[0].Id);
+            controller.getRecord()
+              .put('Department_Class__c', departmentAccount[0].Id);
+          }
+        }
+      }
+      //鍏徃锛堢瀹わ級
+      if (mso.containsKey('CF00N10000002CvC5')) {
+        controller.getRecord().put('Company', mso.get('CF00N10000002CvC5'));
+      }
+      //鎴樼暐绉戝CF00N10000006qNtt_lkid
+      // if(mso.containsKey('CF00N10000006qNtt_lkid ')){
+      //     controller.getRecord().put('Department_Class__c',mso.get('CF00N10000006qNtt_lkid '));
+      // }
+      // 2022-04-13 鏉ユ簮 jz start 0414 lt
+      if (mso.containsKey('LeadSource')) {
+        controller.getRecord().put('LeadSource', mso.get('LeadSource'));
+      }
+      if (mso.containsKey(System.Label.Opportunity_stage)) {
+        controller.getRecord()
+          .put('Opportunity_stage__c', mso.get(System.Label.Opportunity_stage));
+      }
+      //20220505 lt 娉ㄩ噴鎺�
+      // if (mso.containsKey('00N10000006qOF0')) {
+      //     controller.getRecord().put('Close_Forecasted_Date__c', Date.parse(mso.get('00N10000006qOF0')));
+      // }
+      if (mso.containsKey(System.Label.Opp_Name)) {
+        controller.getRecord()
+          .put('Opp_Name__c', mso.get(System.Label.Opp_Name));
+      }
+      // if (mso.containsKey('00N100000048UBf')) {
+      //     controller.getRecord().put('Contact__c', mso.get('00N100000048UBf'));
+      // }
+      if (mso.containsKey(System.Label.Purchase_Reason)) {
+        controller.getRecord()
+          .put('Purchase_Reason__c', mso.get(System.Label.Purchase_Reason));
+      }
+      if (mso.containsKey(System.Label.Fund_Basis)) {
+        controller.getRecord()
+          .put('Fund_Basis__c', mso.get(System.Label.Fund_Basis));
+      }
+      if (mso.containsKey(System.Label.Purchase_Type)) {
+        controller.getRecord()
+          .put('Purchase_Type__c', mso.get(System.Label.Purchase_Type));
+      }
+      //20220427
+      if (mso.containsKey(System.Label.Tender_information)) {
+        //鎷涙爣椤圭洰Id
+        controller.getRecord()
+          .put(
+            'Tender_information__c',
+            mso.get(System.Label.Tender_information)
+          );
+      }
+      if (mso.containsKey(System.Label.Agency_Opportunity)) {
+        //缁忛攢鍟嗚浠稩d
+        controller.getRecord()
+          .put(
+            'Agency_Opportunity__c',
+            mso.get(System.Label.Agency_Opportunity)
+          );
+      }
+      if (mso.containsKey(System.Label.Sales_Method)) {
+        //缁忛攢鍟嗚浠�--鎷涙爣鏂瑰紡
+        controller.getRecord()
+          .put('Sales_Method__c', mso.get(System.Label.Sales_Method));
+      }
+      if (mso.containsKey(System.Label.Request)) {
+        controller.getRecord().put('Request__c', mso.get(System.Label.Request));
+      }
+      if (mso.containsKey(System.Label.Request_Detail)) {
+        controller.getRecord()
+          .put('Request_Detail__c', mso.get(System.Label.Request_Detail));
+      }
+      // 2022-04-13 鏉ユ簮 jz end 0414 lt
+      rtTypeId = ApexPages.currentPage().getParameters().get('RecordType');
+      // 20220420 lt OBSAP start
+      if (String.isBlank(rtTypeId) && mso.containsKey('RecordTypeId')) {
+        rtTypeId = mso.get('RecordTypeId');
+      }
+      // 20220420 lt OBSAP end
+      obj.put('OwnerId', UserInfo.getUserId());
+    }
+    system.debug('RecordTypeId:' + rtTypeId);
+    LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(
+      rtTypeId,
+      'Lead',
+      'classic'
+    );
+    layoutSections = LayoutWrapperValue.layoutSections;
+    List<String> requiredFieldAPIList = LayoutWrapperValue.requiredFieldAPIList;
+    Map<String, String> fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap;
+    requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList);
+    fieldAPIToLabelMapStr = JSON.serialize(fieldAPIToLabelMap);
+    PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo(
+      'Lead'
+    );
+    staticResource = JSON.serialize(piIntegration);
+    staticResourceContact = JSON.serialize(
+      PIHelper.getPIIntegrationInfo('Contact')
+    );
+    staticResourceInquiryForm = JSON.serialize(
+      PIHelper.getPIIntegrationInfo('Inquiry_form__c')
+    );
+    //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 start
+    staticResourceV2 = JSON.serialize(PIHelper.getPIIntegrationInfo('LeadV2'));
+    //zhj MEBG鏂版柟妗堟敼閫� 2022-11-29 end
+    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
+      );
+    }
+    //鑾峰彇lookup瀛楁
+    List<String> VLookUpFields = new List<String>();
+    for (LayoutDescriberHelper.LayoutSection ls : layoutSections) {
+      for (LayoutDescriberHelper.LayoutField lf : ls.layoutFields) {
+        if (lf.fieldAPI != '' && lf.fieldType == 'reference') {
+          VLookUpFields.add(lf.fieldAPI);
+        }
+      }
+    }
+    VLookUpFieldsJson = Json.serialize(VLookUpFields);
+  }
+
+  global class Response {
+    public String recordId { get; set; }
+    public String message { get; set; }
+    public String status { get; set; }
+  }
+
+  @RemoteAction
+  global static Response saveLead(
+    String leadJson,
+    String transId,
+    Boolean isNew
+  ) {
+    System.debug('Lead Info:' + JSON.serialize(leadJson));
+    //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
+    );
+    Lead leadInfo = new Lead();
+    String status = 'success';
+    Response resp = new Response();
+    Savepoint sp = Database.setSavepoint();
+    Boolean isClone = false;
+    String rid = '';
+    String awsDataId = '';
+    try {
+      //鑷畾涔夋牸寮忚浆鎹�
+      for (String fieldAPI : fieldValueMap.keySet()) {
+        system.debug('field API=' + fieldAPI);
+        if (!fieldAPIToTypeMap.containskey(fieldAPI)) {
+          continue;
+        }
+        Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI)
+          .getDescribe()
+          .getType();
+        String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI));
+        system.debug(
+          'Field Type:' + fielddataType + ' field Value=' + fieldValue
+        );
+        if (String.valueOf(fielddataType) == 'DATE') {
+          leadInfo.put(
+            fieldAPI,
+            (String.isBlank(fieldValue) || String.isEmpty(fieldValue))
+              ? null
+              : Date.valueOf(fieldValue.replace('/', '-'))
+          );
+        } else if (String.valueOf(fielddataType) == 'DATETIME') {
+          if (String.isNotBlank(fieldValue) && fieldValue.contains('T')) {
+            fieldValue = fieldValue.replace('T', ' ');
+            leadInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue));
+          } else {
+            leadInfo.put(fieldAPI, null);
+          }
+        } else if (
+          String.valueof(fielddataType) == 'CURRENCY' ||
+          String.valueof(fielddataType) == 'PERCENT' ||
+          String.valueOf(fielddataType) == 'Number' ||
+          String.valueOf(fielddataType) == 'DOUBLE'
+        ) {
+          leadInfo.put(
+            fieldAPI,
+            (String.isBlank(fieldValue) || String.isEmpty(fieldValue))
+              ? null
+              : Decimal.valueOf(fieldValue.replace(',', ''))
+          );
+        } else if (String.valueof(fielddataType) == 'BOOLEAN') {
+          leadInfo.put(fieldAPI, fieldValueMap.get(fieldAPI));
+        } else {
+          leadInfo.put(fieldAPI, fieldValue);
+        }
+      }
+
+      //2. Save Record Process
+
+      System.debug('abcde');
+      awsDataId = (String) leadInfo.get('AWS_Data_Id__c');
+      System.debug('awsDataId = ' + awsDataId);
+      Lead[] leads = [SELECT id FROM Lead WHERE AWS_Data_Id__c = :awsDataId];
+
+      if (!isNew) {
+        isClone = leads.size() == 0;
+      }
+      System.debug('isClone---------' + isClone);
+      //2022-6-10 yjk SWAG-CEY8GZ start
+      if (leadInfo.Hospital_Name__c != null) {
+        Account acc = [
+          SELECT id, Hospital__c
+          FROM Account
+          WHERE id = :leadInfo.Hospital_Name__c
+        ];
+        leadInfo.hospital__c = acc.Hospital__c;
+      }
+      //2022-6-10 yjk SWAG-CEY8GZ end
+      if (isNew || isClone) {
+        System.debug('leadInfozhj = ' + leadInfo);
+        if (!Test.isRunningTest()) {
+          insert leadInfo;
+        }
+      } else {
+        System.debug('into update');
+        // String awsDataId = (String)leadInfo.get('AWS_Data_Id__c');
+        // System.debug('awsDataId = ' + awsDataId);
+        // Lead[] leads = [select id from Lead where AWS_Data_Id__c =:awsDataId];
+        System.debug('leads[0].id = ' + leads[0].id);
+        leadInfo.put('Id', leads[0].id); //For testing;
+        if (!Test.isRunningTest()) {
+          update leadInfo;
+        }
+      }
+      rid = leadInfo.Id;
+      PIHelper.saveTransLog(
+        sobjectTypeValue,
+        (String) leadInfo.get('AWS_Data_Id__c'),
+        rid,
+        transId,
+        leadJson,
+        status,
+        ''
+      );
+      resp.recordId = leadInfo.Id;
+      resp.message = '';
+      resp.status = status;
+      System.debug('resp from sfdx back-end' + resp);
+      return resp;
+    } 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) leadInfo.get('AWS_Data_Id__c'),
+        rid,
+        transId,
+        leadJson,
+        status,
+        e.getMessage() + e.getStackTraceString()
+      );
+      return resp;
+    } catch (Exception e) {
+      System.debug('into catch' + e.getMessage());
+      Database.rollback(sp);
+      status = 'fail';
+      PIHelper.saveTransLog(
+        sobjectTypeValue,
+        (String) leadInfo.get('AWS_Data_Id__c'),
+        rid,
+        transId,
+        leadJson,
+        status,
+        e.getMessage()
+      );
+      resp.message = e.getMessage();
+      resp.status = status;
+      return resp;
+    }
+  }
+
+  @RemoteAction
+  global static String queryAccount(String accountTypes, String accountId) {
+    System.debug('accountType=' + accountTypes);
+    System.debug('accountId=' + accountId);
+    List<Object> types = (List<Object>) JSON.deserializeUntyped(accountTypes);
+    System.debug('types=' + types);
+    String soql = 'select Id,Name,';
+    for (Object t : types) {
+      soql += (String) t + ',';
+    }
+    soql = soql.substring(0, soql.length() - 1);
+    soql += ' from Account where id=\'' + accountId + '\'';
+    System.debug('soql=' + soql);
+    Sobject account = new Account();
+    if (!Test.isRunningTest()) {
+      account = Database.query(soql);
+    } else {
+      account.put('Id', '000000000000000');
     }
 
-    global class Response{
-        public String recordId{set;get;}
-        public String message{set;get;}
-        public String status{set;get;}
-    }
+    Map<String, Map<String, String>> m = new Map<String, Map<String, String>>();
 
-    @RemoteAction
-    global static Response saveLead(String leadJson,String transId,Boolean isNew) {
-        System.debug('Lead Info:' + JSON.serialize(leadJson));
-        //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);
-        Lead leadInfo = new Lead();
-        //鑷畾涔夋牸寮忚浆鎹�
-        for (String fieldAPI: fieldValueMap.keySet()) {
-            system.debug('field API='+fieldAPI);
-            if(!fieldAPIToTypeMap.containskey(fieldAPI)){
-                continue;
-            }
-            Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI).getDescribe().getType();  
-            String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI)); 
-            system.debug('Field Type:'+fielddataType+' field Value='+fieldValue);
-            if(String.valueOf(fielddataType)=='DATE'){
-                leadInfo.put(fieldAPI,(String.isBlank(fieldValue)||String.isEmpty(fieldValue))? null:Date.valueOf(fieldValue.replace('/', '-')));              
-            }else if(String.valueOf(fielddataType)=='DATETIME'){
-                if(String.isNotBlank(fieldValue)&&fieldValue.contains('T')){
-                    fieldValue = fieldValue.replace('T',' ');
-                    leadInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue));
-                }else{
-                    leadInfo.put(fieldAPI, null);
-                }                    
-            }else if(String.valueof(fielddataType)=='CURRENCY'|| String.valueof(fielddataType)=='PERCENT'||String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){
-                leadInfo.put(fieldAPI, (String.isBlank(fieldValue)||String.isEmpty(fieldValue))?null:Decimal.valueOf(fieldValue.replace(',', ''))); 
-            } else if(String.valueof(fielddataType)=='BOOLEAN'){
-                leadInfo.put(fieldAPI, fieldValueMap.get(fieldAPI));
-            }else {
-                leadInfo.put(fieldAPI,fieldValue);
-            }                  
+    System.debug('account=' + account);
+    for (Object ty : types) {
+      String t = (String) ty;
+      if (account.get(t) != null || Test.isRunningTest()) {
+        Sobject acc = new Account();
+        if (Test.isRunningTest()) {
+          acc.put('Id', '000000000000000');
+          acc.put('Name', 'Name');
+        } else {
+          acc = Database.query(
+            'select Id,Name from Account where id=\'' + account.get(t) + '\''
+          );
         }
-        
-        //2. Save Record Process
-        String status = 'success';    
-        Response resp = new Response();
-        Savepoint sp = Database.setSavepoint();
-        String rid = '';
-        try{
-            System.debug('abcde');
-            if(isNew){
-                System.debug('leadInfozhj = ' + leadInfo);
-                insert leadInfo;
-            }else{
-                System.debug('into update');
-                String awsDataId = (String)leadInfo.get('AWS_Data_Id__c');
-                System.debug('awsDataId = ' + awsDataId);
-                Lead[] leads = [select id from Lead where AWS_Data_Id__c =:awsDataId];
-                System.debug('leads[0].id = ' + leads[0].id);
-                leadInfo.put('Id',leads[0].id);//For testing;
-                update leadInfo;
-            }
-            rid=leadInfo.Id;
-            PIHelper.saveTransLog(sobjectTypeValue,(String)leadInfo.get('AWS_Data_Id__c'),rid,transId,leadJson ,status,'');
-            resp.recordId = leadInfo.Id;
-            resp.message = '';
-            resp.status = status;
-            System.debug('resp from sfdx back-end' + resp);
-            return resp;
-
-        } catch(Exception e) {
-            System.debug('into catch'+e.getMessage());
-            Database.rollback(sp);
-            status = 'fail';
-            PIHelper.saveTransLog(sobjectTypeValue,(String)leadInfo.get('AWS_Data_Id__c'),rid,transId,leadJson,status,e.getMessage());
-            resp.message = e.getMessage();            
-            resp.status = status;
-            return resp;
-        }
+        Map<String, String> n = new Map<String, String>();
+        n.put('Id', (String) acc.get('Id'));
+        n.put('Name', (String) acc.get('Name'));
+        m.put(t, n);
+      }
     }
-}
\ No newline at end of file
+    // if (account.get('Hospital__c') != null){
+    //     m.put('Hospital__c', (String)account.get('Hospital__c'));
+    //     m.put('Hospital__r.Name', (String)account.get('Hospital__r.Name'));
+    // }
+    // if (account.get('Department_Class__c') != null){
+    //     m.put('Department_Class__c', (String)account.get('Department_Class__c'));
+    //     m.put('Department_Class__r.Name', (String)account.get('Department_Class__r.Name'));
+    // }
+    System.debug('m=' + m);
+    return JSON.serialize(m);
+
+    // return (String)account.get('Hospital__c');
+  }
+
+  public static Integer ControllerUtil() {
+    Integer i = 0;
+    return i;
+  }
+}

--
Gitblit v1.9.1