From a2f7f78e8b02e3613c9ff9cf584de2ec0bda075d Mon Sep 17 00:00:00 2001
From: 李彤 <litong@prec-tech.com>
Date: 星期四, 12 五月 2022 09:34:08 +0800
Subject: [PATCH] 替换字段

---
 force-app/main/default/classes/ApplicationForCAHandler.cls |   93 +++++++++++++++-------------------------------
 1 files changed, 31 insertions(+), 62 deletions(-)

diff --git a/force-app/main/default/classes/ApplicationForCAHandler.cls b/force-app/main/default/classes/ApplicationForCAHandler.cls
index 1c36095..50fed32 100644
--- a/force-app/main/default/classes/ApplicationForCAHandler.cls
+++ b/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;
+            }
+        }
+    }
+
     // 瀹℃壒涓嶉�氳繃鐨勬椂鍊� 娓呯┖浼氳鍜孫PD璁″垝涓婄殑鍐宠淇℃伅
     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;
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1