buli
2023-07-11 80a3f59e2d3df07805bc67e329300b8de90a5b3a
force-app/main/default/classes/NewAndEditLeadController.cls
@@ -3,48 +3,52 @@
 * 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 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{set;get;}
    public Boolean isCloneMode{protected 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 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 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;}
    public String VLookUpFieldsJson { get; private set; }
    //zhj MEBG新方案改造 2022-11-29 start
    public String staticResourceV2 {get; set;}
    public String staticResourceV2 { get; set; }
    //zhj MEBG新方案改造 2022-11-29 end
    public NewAndEditLeadController(ApexPages.StandardController controller) {
        ApiPrefix = 'PIBackApi';
        ApiPrefix = 'PIBackApi';
        isDecryptContact = '0';
        isNewMode = true;
        isCloneMode = false;
@@ -52,99 +56,150 @@
        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')){
        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());
        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()) {
        if (!Test.isRunningTest()) {
            controller.addFields(fieldList);
        }
        SObject obj = controller.getRecord();
        }
        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 = 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){
        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];
            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];
            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);
            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){
        } 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];
            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);
            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{
        } else {
            //看链接中有无带过来的参数(客户人员)
            // Map<string,string> mso = ApexPages.currentPage().getParameters();
            for(String key : mso.keySet()){
            for (String key : mso.keySet()) {
                System.debug('key=' + key + ',value=' + mso.get(key));
            }
            //联系人
            if(mso.containsKey('CF00N10000006ps6f_lkid')){
            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]);
                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){
                if (contactList != null && contactList.size() > 0) {
                    c = contactList[0];
                }
                if (c != null&&c.AWS_Data_Id__c!='') {
                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);
                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'));
                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'));
            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) {
                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);
                        controller.getRecord().put('Department_Class__c', departmentAccount[0].Id);
                    }
                }
            }
            //公司(科室)
            if(mso.containsKey('CF00N10000002CvC5')){
                controller.getRecord().put('Company',mso.get('CF00N10000002CvC5'));
            if (mso.containsKey('CF00N10000002CvC5')) {
                controller.getRecord().put('Company', mso.get('CF00N10000002CvC5'));
            }
            //战略科室CF00N10000006qNtt_lkid
            //战略科室CF00N10000006qNtt_lkid
            // if(mso.containsKey('CF00N10000006qNtt_lkid ')){
            //     controller.getRecord().put('Department_Class__c',mso.get('CF00N10000006qNtt_lkid '));
            // }
@@ -174,20 +229,23 @@
            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
            //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)) { //经销商询价Id
            if (mso.containsKey(System.Label.Agency_Opportunity)) {
                //经销商询价Id
                controller.getRecord().put('Agency_Opportunity__c', mso.get(System.Label.Agency_Opportunity));
            }
            if (mso.containsKey(System.Label.Sales_Method)) { //经销商询价--招标方式
            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)) {
            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
@@ -197,13 +255,17 @@
                rtTypeId = mso.get('RecordTypeId');
            }
            // 20220420 lt OBSAP end
            obj.put('OwnerId',UserInfo.getUserId());
            obj.put('OwnerId', UserInfo.getUserId());
        }
        system.debug('RecordTypeId:'+rtTypeId);
        LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(rtTypeId, 'Lead','classic');
        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;
        Map<String, String> fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap;
        requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList);
        fieldAPIToLabelMapStr = JSON.serialize(fieldAPIToLabelMap);
        PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo('Lead');
@@ -216,7 +278,7 @@
        encryptedAPIList = piIntegration.PIFields;
        sobjectPrefix = piIntegration.sobjectPrefix;
        layoutSectionsStr = JSON.serialize(layoutSections);
        AWSToSobjectEncryptedMap = new Map<String,String>();
        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);
        }
@@ -232,97 +294,110 @@
        VLookUpFieldsJson = Json.serialize(VLookUpFields);
    }
    global class Response{
        public String recordId{set;get;}
        public String message{set;get;}
        public String status{set;get;}
    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) {
    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);
        Map<String, Object> fieldValueMap = (Map<String, Object>) JSON.deserializeUntyped(leadJson);
        Lead leadInfo = new Lead();
        String status = 'success';
        String status = 'success';
        Response resp = new Response();
        Savepoint sp = Database.setSavepoint();
        Boolean isClone = false;
        String rid = '';
        String awsDataId = '';
        try{
        try {
            //自定义格式转换
            for (String fieldAPI: fieldValueMap.keySet()) {
                system.debug('field API='+fieldAPI);
                if(!fieldAPIToTypeMap.containskey(fieldAPI)){
            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',' ');
                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{
                    } 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'){
                    }
                } 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);
                }
                } else {
                    leadInfo.put(fieldAPI, fieldValue);
                }
            }
            //2. Save Record Process
            System.debug('abcde');
            awsDataId = (String)leadInfo.get('AWS_Data_Id__c');
            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){
            Lead[] leads = [SELECT id FROM Lead WHERE AWS_Data_Id__c = :awsDataId];
            if (!isNew) {
                isClone = leads.size() == 0;
            }
            System.debug('isClone---------'+isClone);
            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];
            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){
            if (isNew || isClone) {
                System.debug('leadInfozhj = ' + leadInfo);
                if(!Test.isRunningTest()){
                if (!Test.isRunningTest()) {
                    insert leadInfo;
                }
            }else{
            } 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()){
                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,'');
            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) {
        } catch (DmlException e) {
            Integer index = 0;
            System.debug(e.getNumDml());
            System.debug(e.getDmlFields(index));
@@ -334,61 +409,75 @@
            system.debug(e.getMessage());
            system.debug(e.getStackTraceString());
            System.debug('into catch'+e.getMessage());
            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());
            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());
        } 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();
            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);
    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 += (String) t + ',';
        }
        soql = soql.substring(0,soql.length()-1);
        soql += ' from Account where id=\''+accountId+'\'';
        System.debug('soql='+soql);
        soql = soql.substring(0, soql.length() - 1);
        soql += ' from Account where id=\'' + accountId + '\'';
        System.debug('soql=' + soql);
        Sobject account = new Account();
        if(!Test.isRunningTest()){
        if (!Test.isRunningTest()) {
            account = Database.query(soql);
        }else{
            account.put('Id','000000000000000');
        } else {
            account.put('Id', '000000000000000');
        }
        Map<String, Map<String, String>> m = new Map<String, Map<String, String>>();
        System.debug('account='+account);
        System.debug('account=' + account);
        for (Object ty : types) {
            String t = (String)ty;
            if (account.get(t) != null||Test.isRunningTest()){
            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)+'\'');
                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) + '\'');
                }
                Map<String, String> n = new Map<String, String>();
                n.put('Id', (String)acc.get('Id'));
                n.put('Name', (String)acc.get('Name'));
                n.put('Id', (String) acc.get('Id'));
                n.put('Name', (String) acc.get('Name'));
                m.put(t, n);
            }
        }
@@ -400,7 +489,7 @@
        //     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);
        System.debug('m=' + m);
        return JSON.serialize(m);
        // return (String)account.get('Hospital__c');
@@ -408,757 +497,6 @@
    public static Integer ControllerUtil() {
        Integer i = 0;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        return i;}
}
        return i;
    }
}