trigger RepairHpDeptUpd on Repair__c (before update) { 
 | 
    List<String> accIds = new List<String>(); 
 | 
  
 | 
    for(Repair__c a : Trigger.new) { 
 | 
        if (Trigger.oldMap.get(a.Id).get('Account__c') != a.Account__c 
 | 
                || a.AccountParentId__c != a.Department_Class__c 
 | 
                || a.AccountParentParentId__c != a.Hospital__c) { 
 | 
            if (!String.isBlank(a.Account__c)) { 
 | 
                accIds.add(a.Account__c); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    if (accIds.size() > 0) { 
 | 
        // 診療科レコードタイプ 
 | 
         
 | 
        // 原逻辑 为了减少select 改成新逻辑 
 | 
        /* 
 | 
        String[] deptTypes = new String[] {'病院', '診療科 その他', '診療科 呼吸科', '診療科 婦人科', '診療科 普外科', '診療科 泌尿科', '診療科 消化科', '診療科 耳鼻喉科'}; 
 | 
        Map<String, String> deptRectMap = new Map<String, String>(); 
 | 
         
 | 
        List<RecordType> deptRects = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN :deptTypes]; 
 | 
        for (RecordType rect : deptRects) { 
 | 
            deptRectMap.put(rect.Id, rect.Name); 
 | 
        } 
 | 
        */ 
 | 
        //元逻辑 
 | 
        // 改成新逻辑,去掉一个select start 
 | 
        String[] deptTypes = new String[] {'HP', 'Department_OTH', 'Department_BF', 'Department_GYN', 'Department_GS',  
 | 
        'Department_URO', 'Department_GI', 'Department_ENT'}; 
 | 
  
 | 
        Map<String, String> deptRectMap = new Map<String, String>(); 
 | 
        Map<String, Schema.RecordTypeInfo> deptrectAllMap = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName(); 
 | 
        for (string rect : deptTypes) { 
 | 
            deptRectMap.put(deptrectAllMap.get(rect).getRecordTypeId(),rect); 
 | 
        } 
 | 
         // 改成新逻辑,去掉一个select end 
 | 
         
 | 
        Map<Id, Account> accMap = new Map<Id, Account>(); 
 | 
        List<Account> accs = ControllerUtil.selectAccountForTrigger(accIds); 
 | 
        for(Account acc : accs) { 
 | 
            accMap.put(acc.Id, acc); 
 | 
        } 
 | 
         
 | 
        for(Repair__c a : Trigger.new) { 
 | 
            // 「診療科」に診療科を選択する場合 
 | 
            Account acc = accMap.get(a.Account__c); 
 | 
            if (acc != null 
 | 
                    && deptRectMap.get(acc.RecordTypeId) != null) { 
 | 
                if (deptRectMap.get(acc.RecordTypeId) == 
 | 
                // 原为 '病院' ,改为HP 
 | 
                'HP') { 
 | 
                    a.Department_Class__c = null; 
 | 
                    a.Hospital__c = acc.Id; 
 | 
                } else { 
 | 
                    a.Department_Class__c = acc.ParentId; 
 | 
                    a.Hospital__c = acc.Parent.ParentId; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    for(Repair__c rep : Trigger.new){ 
 | 
        // DOJ上线课题33 从IISE过来,直接同步到EtQ的时候,出现报错。需要修改逻辑。 start 
 | 
        if (String.isBlank(rep.ASReportedCodeAC__c) ||  rep.ASReportedCodeAC__c.indexof('UseRSA') >= 0 ) { 
 | 
            rep.Contain_UseRSA__c = true; 
 | 
        }else{ 
 | 
            rep.Contain_UseRSA__c = false; 
 | 
        } 
 | 
        // DOJ上线课题33 从IISE过来,直接同步到EtQ的时候,出现报错。需要修改逻辑。 end 
 | 
    } 
 | 
  
 | 
     
 | 
  
 | 
    // RS-202009-498827 
 | 
    // Complaint Number同步到SFDC的时候,OSH RA确认者被更新为精琢技术  20200922 Gzw 注释 
 | 
    // List<Repair__c> newList = Trigger.new; 
 | 
    // Map<Id,Repair__c> newMap = Trigger.newMap; 
 | 
    // //newMap.values(); 
 | 
    // List<Repair__c> oldList = Trigger.old; 
 | 
    // Map<Id,Repair__c> oldMap = Trigger.oldMap; 
 | 
     
 | 
    // for(Repair__c rep : newList){ 
 | 
    //     Repair__c old = oldMap.get(rep.Id); 
 | 
    //     if(rep.Complaint_Number__c != old.Complaint_Number__c ){ 
 | 
    //         rep.OSH_Affirmant__c = UserInfo.getUserId(); 
 | 
    //         rep.OSH_ConfirmationDate__c = Date.today(); 
 | 
    //     } 
 | 
    // } 
 | 
} 
 |