| 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(); | 
|     //     } | 
|     // } | 
| } |