binxie
2024-01-18 0e0dd1e20e7211f3c3c11d77a41090d998dfd06c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
trigger RepairHpDeptUpd on Repair__c (before update) {
    if((!Test.isRunningTest())&&System.Label.ByPassTrigger.contains(UserInfo.getUserId())){
        return;
    }
    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();
    //     }
    // }
}