From 6947068a02499b9d1022f9efca5bcf1bdd3f1c70 Mon Sep 17 00:00:00 2001
From: Denny Chen <chenbangcai@prec-tech.com>
Date: 星期一, 28 二月 2022 10:45:11 +0800
Subject: [PATCH] Note test

---
 force-app/main/default/classes/NFM705Rest.cls |  238 ++++++++++++++++++++++++-----------------------------------
 1 files changed, 98 insertions(+), 140 deletions(-)

diff --git a/force-app/main/default/classes/NFM705Rest.cls b/force-app/main/default/classes/NFM705Rest.cls
index 4bf823d..acafad9 100644
--- a/force-app/main/default/classes/NFM705Rest.cls
+++ b/force-app/main/default/classes/NFM705Rest.cls
@@ -6,6 +6,11 @@
  *  {
         
     }
+ * @msg:
+ *   1.鎺ユ敹鍒扮殑鍐宠淇℃伅鍏ㄩ敭鏇存柊鍒板浼氫笂锛屼繚鎸佸浼氬拰鍐宠涓�鐩达紙绌虹殑椤圭洰涓嶆洿鏂帮級
+ *   2.璧炲姪浼氫笉鍋氳嚜鍔ㄥ垱寤哄拰鑷姩鏇存柊
+ *   3.琛ュ厖鍐宠棰濆鍒涘缓鏂扮殑鍐宠鏁版嵁锛屼絾涓嶈嚜鍔ㄥ垱寤哄浼�
+ *   4.琛ュ厖鍐宠鏇存柊鏃跺彧鏇存柊鍐宠淇℃伅锛屼笉鏇存柊瀛︿細
 *************************************************************************/
 @RestResource(urlMapping='/NFM705/*')
 global with sharing class NFM705Rest {
@@ -21,20 +26,23 @@
         public String StartDate; //寮�濮嬫棩鏈� == StartDate
         public String EndDate; //缁撴潫鏃ユ湡 == EndDate
         public String BudgetType; //棰勭畻绫诲瀷 == Budget_Type__c
-		public String OfficeCategory; //绉戝鍒嗙被 == OfficeCategory__c
-		public String MeetingType; //浼氳绫诲瀷 == Meeting_Type__c	
-		public String StateMaster; //鐪� == State_Master__c
-		public String CityMaster; //甯� == City_Master__c
-		public String WorkshopPlace; //浼氬満鍦扮偣 == WorkshopPlace__c
-		public String HostName; //浼氳涓诲姙鏂� == HostName__c
-		public String CooperatorCompany; //浼氳鎵垮姙鏂� == cooperatorCompany__c
+        public String OfficeCategory; //绉戝鍒嗙被 == OfficeCategory__c
+        public String MeetingType; //浼氳绫诲瀷 == Meeting_Type__c   
+        public String StateMaster; //鐪� == State_Master__c
+        public String CityMaster; //甯� == City_Master__c
+        public String WorkshopPlace; //浼氬満鍦扮偣 == WorkshopPlace__c
+        public String HostName; //浼氳涓诲姙鏂� == HostName__c
+        public String CooperatorCompany; //浼氳鎵垮姙鏂� == cooperatorCompany__c
         public String SponsorshipCategory;//璧炲姪娆鹃」鏄惁鏀粯缁欎富鍔炴柟
         public String IsPaidToSponsor;//璧炲姪绫诲埆
-		public Decimal ConveningParticipantsNum; //鍙傚姞浜烘暟锛堝彫寮�锛� == Convening_Participants_Num__c
+        public Decimal ConveningParticipantsNum; //鍙傚姞浜烘暟锛堝彫寮�锛� == Convening_Participants_Num__c
         public Integer ProcessState;//OBPM瀹℃壒鐘舵��
         public Decimal ExpectedOlympusAttendance;//棰勮鍙備細Olympus浜烘暟
         public String ActivityTypeName;//娲诲姩褰㈠紡
         public Decimal ExpectedHcpAttendance;//棰勮鍙備細HCP浜烘暟
+        public String IsCoOrganizingActivities;//浼燳/N锛岃浆鏄�/鍚�
+        public String Applicant; // 鐢宠浜虹殑鍛樺伐缂栫爜  == Applicant__c
+        public String SharedEditing; // 鍏变韩浜虹殑鍛樺伐缂栫爜 == Shared_Editing__c
     }
 
     private static Map<String, String> states;
@@ -110,7 +118,7 @@
         }
         Savepoint sp = Database.setSavepoint();
         try {
-        	List <Application_for_Conference_Adjudication__c> acaList = new List <Application_for_Conference_Adjudication__c>();
+            List <Application_for_Conference_Adjudication__c> acaList = new List <Application_for_Conference_Adjudication__c>();
             //Map<string,GeData> meetingApprovedNoMap = new Map<string,GeData>();
             List<String> meetingApprovedNoList = new List<String>();
             List<String> NumList = new List<String>();
@@ -128,126 +136,103 @@
             }
             
             //Map<String,String> campaignMap = new Map<String,String>();
-            List<Campaign> campaignList = [select Id,Num__c,MeetingApprovedNo__c from Campaign where Num__c IN: NumList  or MeetingApprovedNo__c in :meetingApprovedNoList];
+            List<Campaign> campaignList = NumList.size() > 0 ? [select Id, 
+                                            Num__c, 
+                                            MeetingApprovedNo__c 
+                                        from Campaign 
+                                        where Num__c IN: NumList] : new List<Campaign>();
             // for(Campaign temp : campaignList){
             //     campaignMap.put(temp.Num__c,temp.Id);
             // }
 
             //鏌ヨ浼氳鍐宠琛�
-            Map<String,String> oldacfcMap = new Map<String,String>();
-            List<Application_for_Conference_Adjudication__c> oldafcaList = [select Id,MeetingApprovedNo__c
+            Map<String,Application_for_Conference_Adjudication__c> oldacfcMap = new Map<String,Application_for_Conference_Adjudication__c>();
+            List<Application_for_Conference_Adjudication__c> oldafcaList = [select Id, MeetingApprovedNo__c, Num__c, ProcessState__c
                                                                 from Application_for_Conference_Adjudication__c
-                                                                where MeetingApprovedNo__c IN :meetingApprovedNoList];
+                                                                where MeetingApprovedNo__c IN :meetingApprovedNoList 
+                                                                and ProcessState__c != '瀹℃壒鎴愬姛'];
             for(Application_for_Conference_Adjudication__c oldafca  : oldafcaList){
-                oldacfcMap.put(oldafca.MeetingApprovedNo__c,oldafca.Id);
+                oldacfcMap.put(oldafca.MeetingApprovedNo__c,oldafca);
             }
 
             for (GeData ged : itemMasterList) {
                 //鏂板缓浼氳瑁佸喅鐢宠
                 Application_for_Conference_Adjudication__c aca = new Application_for_Conference_Adjudication__c();
-                aca.MeetingApprovedNo__c          = ged.MeetingApprovedNo;
-            	aca.Name                          = ged.MeetingApprovedNo; // 鐢ㄥ喅瑁佺紪鍙锋浛浠e悕绉�
-            	aca.Num__c                        = ged.Num;
-            	aca.StartDate__c                  = NFMUtil.parseDateTimeStr2Date(ged.StartDate);
-            	aca.EndDate__c                    = NFMUtil.parseDateTimeStr2Date(ged.EndDate);
-            	aca.BudgetType__c                 = ged.BudgetType;
-            	aca.OfficeCategory__c             = ged.OfficeCategory;
-            	aca.MeetingType__c                = ged.MeetingType;
-            	aca.StateMaster__c                = ged.StateMaster;
-            	aca.CityMaster__c                 = ged.CityMaster;
-            	aca.WorkshopPlace__c              = ged.WorkshopPlace;
-            	aca.HostName__c                   = ged.HostName;
-            	aca.CooperatorCompany__c          = ged.CooperatorCompany;
-            	aca.ConveningParticipantsNum__c   = ged.ConveningParticipantsNum;
-                aca.IsPaidToSponsor__c            = NFMUtil.getMapValue(transferMap, 'IsPaidToSponsor__c', string.valueof(ged.IsPaidToSponsor), iflog);
-                aca.SponsorshipCategory__c        = ged.SponsorshipCategory;
-                aca.ExpectedOlympusAttendance__c  = ged.ExpectedOlympusAttendance;
-                aca.ActivityTypeName__c           = ged.ActivityTypeName;
-                aca.ExpectedHcpAttendance__c      = ged.ExpectedHcpAttendance;
-                aca.ProcessState__c               = NFMUtil.getMapValue(transferMap, 'ProcessState__c', string.valueof(ged.ProcessState), iflog);
-                // if(campaignMap.containsKey(ged.Num)){
-                //     aca.Meeting_Belongs__c        = campaignMap.get(ged.Num);
-                // }
-                if(oldacfcMap.containsKey(ged.MeetingApprovedNo)){
-                    aca.Id = oldacfcMap.get(ged.MeetingApprovedNo);
+                aca.MeetingApprovedNo__c            = ged.MeetingApprovedNo;
+                aca.Name                            = ged.MeetingApprovedNo; // 鐢ㄥ喅瑁佺紪鍙锋浛浠e悕绉�
+                aca.CampaignTheme__c                = ged.Name;
+                aca.Num__c                          = ged.Num;
+                aca.StartDate__c                    = NFMUtil.parseDateTimeStr2Date(ged.StartDate);
+                aca.EndDate__c                      = NFMUtil.parseDateTimeStr2Date(ged.EndDate);
+                aca.BudgetType__c                   = ged.BudgetType;
+                aca.OfficeCategory__c               = ged.OfficeCategory;
+                //aca.MeetingType__c                  = ged.MeetingType;
+                aca.MeetingType__c                  = DividingTypes(ged.IsCoOrganizingActivities,ged.ActivityTypeName);
+                aca.StateMaster__c                  = ged.StateMaster;
+                aca.CityMaster__c                   = ged.CityMaster;
+                aca.WorkshopPlace__c                = ged.WorkshopPlace;
+                aca.HostName__c                     = ged.HostName;
+                aca.CooperatorCompany__c            = ged.CooperatorCompany;
+                aca.ConveningParticipantsNum__c     = ged.ConveningParticipantsNum;
+                aca.IsPaidToSponsor__c              = NFMUtil.getMapValue(transferMap, 'IsPaidToSponsor__c', string.valueof(ged.IsPaidToSponsor), iflog);
+                aca.SponsorshipCategory__c          = ged.SponsorshipCategory;
+                aca.ExpectedOlympusAttendance__c    = ged.ExpectedOlympusAttendance;
+                aca.ActivityTypeName__c             = ged.ActivityTypeName;
+                aca.ExpectedHcpAttendance__c        = ged.ExpectedHcpAttendance;
+                aca.ProcessState__c                 = NFMUtil.getMapValue(transferMap, 'ProcessState__c', string.valueof(ged.ProcessState), iflog);
+                aca.Type_of_adjudication_meeting__c = ged.MeetingType;
+                aca.Activities_of_a_share__c        = NFMUtil.getMapValue(transferMap, 'Activities_of_a_share__c', string.valueof(ged.IsCoOrganizingActivities), iflog);
+
+                if(oldacfcMap.containsKey(ged.MeetingApprovedNo) && 
+                    (aca.ProcessState__c != '琛ュ厖鍐宠' || 
+                    aca.ProcessState__c == oldacfcMap.get(ged.MeetingApprovedNo).ProcessState__c)){
+                    aca.Id = oldacfcMap.get(ged.MeetingApprovedNo).Id;
+                    aca.Num__c = String.isBlank(aca.Num__c) ? oldacfcMap.get(ged.MeetingApprovedNo).Num__c : aca.Num__c; 
                 }
+                aca.IsSupplemental__c = aca.ProcessState__c != '琛ュ厖鍐宠' ? false : true;
+                aca.Applicant__c = ged.Applicant;
+                aca.Shared_Editing__c = ged.SharedEditing;
+
                 acaList.add(aca);
             }
             
             if (acaList.size() > 0) {
+                // 鍐欏叆鍐宠淇℃伅
+                upsert acaList;
                 // 鑷姩鍒涘缓瀛︿細
                 List<Application_for_Conference_Adjudication__c> wait_to_create_cams = new List<Application_for_Conference_Adjudication__c>();
                 List<Campaign> new_campaigns = new List<Campaign>();
                 for (Application_for_Conference_Adjudication__c app : acaList) {
-                    if (String.isBlank(app.Id) && String.isBlank(app.Num__c) && app.MeetingType__c != '璧炲姪浼�') {
+                    if (String.isBlank(app.Id) && String.isBlank(app.Num__c) && app.MeetingType__c != '璧炲姪浼�' && app.ProcessState__c != '琛ュ厖鍐宠') {
                         wait_to_create_cams.add(app);
                     }
                 }
                 if (wait_to_create_cams != null && wait_to_create_cams.size() > 0) {
-                    init_state_city();
                     for (Application_for_Conference_Adjudication__c app : wait_to_create_cams) {
                         Campaign cam = createNewCampaignFromApplication(app);
                         new_campaigns.add(cam);
                     }
                     if (new_campaigns.size() > 0) {
                         insert new_campaigns;
-                        // 鍒涘缓瀹屾垚涔嬪悗缁欎細璁笂缁戝畾浼氳Id
-                        // 閲嶆柊妫�绱竴涓嬶紝鍚﹀垯鍙栦笉鍒颁細璁殑缂栫爜
-                        List<String> campaign_ids = new List<String>();
-                        for (Campaign cam : new_campaigns) {
-                            campaign_ids.add(cam.Id);
-                        }
-                        new_campaigns = [select Id, MeetingApprovedNo__c, Num__c from Campaign where Id in :campaign_ids];
-                        for (Campaign cam : new_campaigns) {
-                            for (Application_for_Conference_Adjudication__c app : acaList) {
-                                if (app.MeetingApprovedNo__c == cam.MeetingApprovedNo__c) {
-                                    // app.Meeting_Belongs__c = cam.Id;
-                                    app.Num__c = cam.Num__c;
-                                    break;
-                                }
-                            }
-                        }
                     }
-                }
-                // 鍐欏叆鍐宠淇℃伅
-                upsert acaList;
-                // 鏇存柊鏂板垱寤虹殑瀛︿細 缁戝畾鍐宠Id
-                if (new_campaigns.size() > 0) {
-                    for (Campaign cam : new_campaigns) {
-                        String approved_no = cam.MeetingApprovedNo__c;
-                        for (Application_for_Conference_Adjudication__c app : acaList) {
-                            if (app.Num__c == cam.Num__c) {
-                                cam.MeetingApprovedNo__c   = app.MeetingApprovedNo__c;
-                                cam.Meeting_Approved_No__c = app.Id;
-                                break;
-                            }
-                        }
-                    }
-                    update new_campaigns;
                 }
                 // 鏇存柊宸插瓨鍦ㄧ殑鍐宠淇℃伅
+                System.debug('鏌ユ壘鍒扮殑浼氳: ' + campaignList.size());
                 if (campaignList != null && campaignList.size() > 0) {
-                    init_state_city();
+                    List<Campaign> updatelist = new List<Campaign>();
                     for (Campaign cam : campaignList) {
                         for (Application_for_Conference_Adjudication__c app : acaList) {
-                            if (cam.Num__c == app.Num__c  || cam.MeetingApprovedNo__c ==app.MeetingApprovedNo__c) {
+                            if (cam.Num__c == app.Num__c && !app.IsSupplemental__c) {
                                 cam.MeetingApprovedNo__c             = app.MeetingApprovedNo__c;
                                 cam.Meeting_Approved_No__c           = app.Id;
-
-                                cam.Activity_Type_Name__c            = app.ActivityTypeName__c;
-                                cam.Expected_Olympus_Attendance__c   = app.ExpectedOlympusAttendance__c;
-                                cam.Expected_Hcp_Attendance__c       = app.ExpectedHcpAttendance__c;
-                                // 杩欓噷闇�瑕侀澶栧姞鎿嶄綔
-                                cam.State_Master__c                  = get_state(app.StateMaster__c);                 
-                                cam.City_Master__c                   = get_city(app.CityMaster__c);
-                                cam.IsPaidToSponsor__c               = app.IsPaidToSponsor__c;
-                                cam.SponsorshipCategory__c           = app.SponsorshipCategory__c;
-                                cam.Convening_Participants_Num__c    = app.ConveningParticipantsNum__c;
+                                updatelist.add(cam);
                                 break;
                             }
                         }
                     }
-                    update campaignList;
+                    if (updateList.size() > 0) {
+                        update updatelist;
+                    }
                 }
             }
             rowData.retry_cnt__c = 0;
@@ -367,8 +352,13 @@
     // 鍒涘缓浼氳 缁戝畾鍐宠鐩稿叧淇℃伅
     public static Campaign createNewCampaignFromApplication(Application_for_Conference_Adjudication__c app) {
         Campaign cam = new Campaign();
-        cam.RecordTypeId                     = '01210000000QfeD';
-        cam.CampaignMemberRecordTypeId       = '01210000000R8zy';
+        //瀹氫箟鍙橀噺淇濆瓨璁板綍绫诲瀷
+        Id RtId = Schema.SObjectType.Campaign.getRecordTypeInfosByDeveloperName().get('Society').getRecordTypeId();
+        //List<Id> = [select Id from RecordType where IsActive = true and SobjectType = 'CampaignMember' and Name = '绀惧鍙傚姞浜�'];
+        Id RtId2 = Schema.SObjectType.CampaignMember.getRecordTypeInfosByDeveloperName().get('WorkShop').getRecordTypeId();
+        cam.RecordTypeId                     = RtId;
+        cam.CampaignMemberRecordTypeId       = RtId2;//ID涓嶅啓姝� 绀惧浜哄憳
+
         cam.Name                             = app.MeetingApprovedNo__c;
         cam.Name2__c                         = app.MeetingApprovedNo__c;
         cam.MeetingApprovedNo__c             = app.MeetingApprovedNo__c;
@@ -379,9 +369,7 @@
         cam.OfficeCategory__c                = app.OfficeCategory__c;
         cam.Meeting_Type__c                  = app.MeetingType__c;
         cam.Activity_Type_Name__c            = app.ActivityTypeName__c;
-        // 杩欓噷闇�瑕侀澶栧姞鎿嶄綔
-        cam.State_Master__c                  = get_state(app.StateMaster__c);                 
-        cam.City_Master__c                   = get_city(app.CityMaster__c);
+        
         cam.WorkshopPlace__c                 = app.WorkshopPlace__c;
         cam.HostName__c                      = app.HostName__c;
         cam.cooperatorCompany__c             = app.CooperatorCompany__c;
@@ -395,59 +383,29 @@
         cam.IsPaidToSponsor__c               = app.IsPaidToSponsor__c;
         cam.Activity_Type_Name__c            = app.ActivityTypeName__c;
 
+        // 鏂板鎵�鏈変汉淇℃伅
+        List<String> user_nos = new List<String>();
+        user_nos.add(app.Applicant__c);
+        user_nos.addAll(app.Shared_Editing__c.split(','));
+        List<User> users = [select Id, Employee_No__c from User where Employee_No__c in :user_nos];
+        if (users != null && users.size() > 0) {
+            for (User u : users) {
+                if (u.Employee_No__c == app.Applicant__c) {
+                    cam.OwnerId = u.Id;
+                }
+            }
+        }
+
         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);
+    public static string DividingTypes(String IsCoOrganizingActivities,String ActivityTypeName){
+        if('N'.equals(IsCoOrganizingActivities)){
+            if('璧炲姪'.equals(ActivityTypeName)){
+                return '璧炲姪浼�';
             }
+            return '涓诲姙浼�';
         }
-        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;
+        return '鍏卞悓涓诲姙浼�';
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1