李彤
2022-05-12 a2f7f78e8b02e3613c9ff9cf584de2ec0bda075d
force-app/main/default/classes/ApplicationForCAHandler.cls
@@ -21,6 +21,8 @@
    }
    protected override void beforeUpdate() {
        // 更新时判断是否更新了绑定的学会,如果绑定多个学会且不是赞助会时,清空绑定关系
        clean_binding();
        clean_campaign();
        update_campaign();
    }
@@ -30,13 +32,35 @@
        update_status_on_opd();
    }
    // 更新时判断是否更新了绑定的学会,如果绑定多个学会且不是赞助会时,清空绑定关系
    private void clean_binding() {
        Map<String, String> app_cam_binds = new Map<String, String>();
        for (Application_for_Conference_Adjudication__c app : this.newList) {
            Application_for_Conference_Adjudication__c old_app = this.oldMap.get(app.Id);
            if (String.isNotBlank(old_app.Num__c) && !old_app.Num__c.equals(app.Num__c) && app.MeetingType__c != '赞助会') {
                app_cam_binds.put(old_app.Id, old_app.Num__c);
            }
        }
        if (app_cam_binds.size() > 0) {
            List<Campaign> cams = [select Id, MeetingApprovedNo__c, Meeting_Approved_No__c from Campaign where Meeting_Approved_No__c in :app_cam_binds.keySet() and Num__c in :app_cam_binds.values()];
            if (cams != null && cams.size() > 0) {
                for (Campaign cam : cams) {
                    cam.MeetingApprovedNo__c = null;
                    cam.Meeting_Approved_No__c = null;
                }
                update cams;
            }
        }
    }
    // 审批不通过的时候 清空会议和OPD计划上的决裁信息
    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 == '取消') {
                app.ProcessState__c == '取消' ||
                app.ProcessState__c == '删除') {
                    approved_nos.add(app.Id);
            }
        }
@@ -76,7 +100,7 @@
        }
        Map<String, Campaign> wait_upd_campaigns = new Map<String, Campaign>();
        if (app_ids.size() > 0) {
            List<Campaign> campaigns = [select Id, Num__c, MeetingApprovedNo__c, Meeting_Approved_No__c from Campaign where Meeting_Approved_No__c in :app_ids];
            List<Campaign> campaigns = [select Id, Num__c, MeetingApprovedNo__c, Meeting_Approved_No__c from Campaign where Meeting_Approved_No__c in :app_ids and Meeting_Type__c != '赞助会'];
            if (campaigns.size() > 0) {
                for (Campaign cam : campaigns) {
                    Application_for_Conference_Adjudication__c app = this.newMap.get(cam.Meeting_Approved_No__c);
@@ -128,13 +152,11 @@
    // 更新决裁的信息到学会上
    private Campaign update_info_from_app(Campaign cam, Application_for_Conference_Adjudication__c app) {
        init_state_city();
        cam.StartDate                        = app.StartDate__c;
        cam.EndDate                          = app.EndDate__c;
        cam.Budget_Type__c                   = app.BudgetType__c;
        cam.Implementation_Purpose__c                   = app.BudgetType__c;
        cam.OfficeCategory__c                = app.OfficeCategory__c;
        cam.Meeting_Type__c                  = app.MeetingType__c;
        cam.Activity_Type_Name__c            = app.ActivityTypeName__c;
        cam.WorkshopPlace__c                 = app.WorkshopPlace__c;
        cam.HostName__c                      = app.HostName__c;
@@ -146,65 +168,12 @@
        cam.Expected_Hcp_Attendance__c       = app.ExpectedHcpAttendance__c;
        cam.SponsorshipCategory__c           = app.SponsorshipCategory__c;
        cam.IsPaidToSponsor__c               = app.IsPaidToSponsor__c;
        cam.Activity_Type_Name__c            = app.ActivityTypeName__c;
        // cam.Activity_Type_Name__c            = app.ActivityTypeName__c;
        cam.Activity_Type_Name__c            = app.Type_of_adjudication_meeting__c;
        // 这里需要额外加操作
        cam.State_Master__c                  = get_state(app.StateMaster__c);
        cam.City_Master__c                   = get_city(app.CityMaster__c);
        cam.State_Master__c                  = StateCityUtil.get_state(app.StateMaster__c);
        cam.City_Master__c                   = StateCityUtil.get_city(app.CityMaster__c);
        return cam;
    }
    // 初始化省市信息
    public static void init_state_city() {
        if (states == null || states.size() <= 0) {
            states = new Map<String, String>();
            List<Address_Level__c> lst_state = [select Id, Name from Address_Level__c];
            for (Address_Level__c level1 : lst_state) {
                states.put(level1.Name, level1.Id);
            }
        }
        if (cities == null || cities.size() <= 0) {
            cities = new Map<String, String>();
            List<Address_Level2__c> lst_city = [select Id, Name from Address_Level2__c];
            for (Address_Level2__c level2 : lst_city) {
                cities.put(level2.Name, level2.Id);
            }
        }
    }
    // 设置会议上的省
    public static String get_state(String state_name) {
        if (String.isBlank(state_name)) {
            return null;
        }
        if (states == null || states.size() <= 0) {
            return null;
        }
        // 处理空格 或许后续还有别的处理
        state_name = state_name.trim().replace(' ', '');
        for(String state : states.keySet()) {
            if (state_name.contains(state) || state.contains(state_name)) {
                return states.get(state);
            }
        }
        return null;
    }
    // 设置会议上的市
    public static String get_city(String city_name) {
        if (String.isBlank(city_name)) {
            return null;
        }
        if (cities == null || cities.size() <= 0) {
            return null;
        }
        // 处理空格 或许后续还有别的处理
        city_name = city_name.trim().replace(' ', '');
        for(String city : cities.keySet()) {
            if (city_name.contains(city) || city.contains(city_name)) {
                return cities.get(city);
            }
        }
        return null;
    }
}