高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
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
/**
 * 2022-01-20 create
 * 
 * 1.SFDC先创建会议再发送OBPM时,705接口处理了决裁查找学会的操作,trigger里需要检索并更新学会上的查找决裁
 * 2.决裁状态更新为不可用的时候(驳回、删除),清除学会上的决裁信息。
 */
public without sharing class ApplicationForCAHandler extends Oly_TriggerHandler  {
    private Map<Id, Application_for_Conference_Adjudication__c> newMap;
    private Map<Id, Application_for_Conference_Adjudication__c> oldMap;
    private List<Application_for_Conference_Adjudication__c> newList;
    private List<Application_for_Conference_Adjudication__c> oldList;
    
    public ApplicationForCAHandler() {
        this.newMap = (Map<Id, Application_for_Conference_Adjudication__c>) Trigger.newMap;
        this.oldMap = (Map<Id, Application_for_Conference_Adjudication__c>) Trigger.oldMap;
        this.newList = (List<Application_for_Conference_Adjudication__c>) Trigger.new;
        this.oldList = (List<Application_for_Conference_Adjudication__c>) Trigger.old;
    }
 
    protected override void beforeUpdate() {
        clean_campaign();
        clean_application();
    }
 
    protected override void afterUpdate() {
 
    }
 
    // 审批不通过的时候 清空会议上的决裁信息
    private void clean_campaign() {
        List<String> approved_nos = new List<String>();
        for (Application_for_Conference_Adjudication__c app : this.newList) {
            if (app.ProcessState__c == '驳回' || 
                app.ProcessState__c == '终止申请' || 
                app.ProcessState__c == '取消') {
                    approved_nos.add(app.Id);
            }
        }
        if (approved_nos.size() > 0) {
            List<Campaign> campaigns = [select Id, MeetingApprovedNo__c, Meeting_Approved_No__c from Campaign where Meeting_Approved_No__c in :approved_nos];
            if (campaigns != null && campaigns.size() > 0) {
                for (Campaign cam : campaigns) {
                    cam.MeetingApprovedNo__c = null;
                    cam.Meeting_Approved_No__c = null;
                }
                update campaigns;
            }
        }
    }
 
    // 审批不通过的时候 清空决裁上的会议信息
    private void clean_application() {
        List<String> campaign_ids = new List<String>();
        for (Application_for_Conference_Adjudication__c app : this.newList) {
            if (app.ProcessState__c == '驳回' || 
                app.ProcessState__c == '终止申请' || 
                app.ProcessState__c == '取消') {
                app.Num__c = null;
            }
        }
    }
}