force-app/main/default/classes/NFM707Rest.cls
@@ -6,6 +6,8 @@
 *  {
        
    }
 * @msg:
 *   1.接收到会议结果后,更新学会的状态(非赞助会)
*************************************************************************/
@RestResource(urlMapping='/NFM707/*')
global with sharing class NFM707Rest {
@@ -88,20 +90,21 @@
                //     upsert iflog;
                //     continue;
                // }
                if (String.isNotBlank(ged.Num)) {
               // camMap.put(ged.Num, ged.MeetingApprovedNo);
                   camList.add(ged.MeetingApprovedNo);
                }
                // if (String.isNotBlank(ged.Num)) {
            //    camMap.put(ged.Num, ged.MeetingApprovedNo);
                //    camList.add(ged.MeetingApprovedNo);
                // }
                camList.add(ged.MeetingApprovedNo);
                meetingApprovedNoMap.put(ged.MeetingApprovedNo, ged);
            }
          if (meetingApprovedNoMap.size() > 0) {
                // 查询系统里的 会议决裁申请
             Map<String,Application_for_Conference_Adjudication__c> acaMap = getAcaMap(meetingApprovedNoMap);
             // 查询系统里的 市场活动
                Map<String,Campaign> campaignMap = new Map<String,Campaign>();
               if (camList.size() > 0) {
                    campaignMap = getcampaignMap(camList);
               }
                // Map<String,Campaign> campaignMap = new Map<String,Campaign>();
               // if (camList.size() > 0) {
                //     campaignMap = getcampaignMap(camList);
               // }
               for (String meetingApprovedNo : meetingApprovedNoMap.keySet()) {
                  Result_for_Conference_Adjudication__c rca       = new Result_for_Conference_Adjudication__c();
                  GeData ged = meetingApprovedNoMap.get(meetingApprovedNo);
@@ -115,21 +118,60 @@
                  rca.Competitor__c                          = ged.Competitor;
                  rca.Publicity__c                          = ged.Publicity;
               rca.SocietyHoldPlace__c                      = ged.SocietyHoldPlace;
                    if (campaignMap.containsKey(ged.Num)) {
                     rca.Campaign__c                      = campaignMap.get(ged.Num).Id;
                        // 更新会议日程
                        Campaign cam = campaignMap.get(ged.Num);
                        cam.Meeting_Report__c = rca.Id;
                        cam.Society_Hold_Place__c = rca.SocietyHoldPlace__c;
                        cam.Report_approved_day__c = Date.today();
                  }
                    rca.Campaign_Num__c                             = ged.Num;
                    // if (campaignMap.containsKey(ged.Num)) {
                  //    rca.Campaign__c                      = campaignMap.get(ged.Num).Id;
                    //     // 更新会议日程
                    //     Campaign cam = campaignMap.get(ged.Num);
                    //     cam.Meeting_Report__c = rca.Id;
                    //     cam.Society_Hold_Place__c = rca.SocietyHoldPlace__c;
                    //     cam.Report_approved_day__c = Date.today();
                  // }
               rcaList.add(rca);
               }
               if (rcaList.size() > 0) {
                   insert rcaList;
               }
                if (campaignMap.size() > 0) {
                    update campaignMap.values();
                // if (campaignMap.size() > 0) {
                //     update campaignMap.values();
                // }
                List<Campaign> camNoList = [select id,Num__c,MeetingApprovedNo__c,Meeting_Approved_No__c, Meeting_Approved_No__r.MeetingApprovedNo__c, CampaignStatus__c
                                    from Campaign
                                    where Meeting_Approved_No__r.MeetingApprovedNo__c in: camList and CampaignStatus__c = '会议结束'];
                // System.debug(camNoList);
                if (camNoList != null && camNoList.size() > 0) {
                    List<String> cam_ids = new List<String>();
                    for(Campaign cam : camNoList) {
                        // System.debug('cam: ' + cam.Num__c + '|' + cam.Meeting_Approved_No__c + '|' + cam.Meeting_Approved_No__r.MeetingApprovedNo__c);
                        Application_for_Conference_Adjudication__c app = acaMap.get(cam.Meeting_Approved_No__r.MeetingApprovedNo__c);
                        // System.debug('app: ' + (app != null ? app.Id : 'null'));
                        cam_ids.add(cam.id);
                        for (Result_for_Conference_Adjudication__c rca : rcaList) {
                            // System.debug('rca: ' + rca.Application_for_Conference_Adjudication__c);
                            if (cam.Meeting_Approved_No__c == rca.Application_for_Conference_Adjudication__c || (app != null && app.Id == rca.Application_for_Conference_Adjudication__c)) {
                                // 更新会议日程
                                cam.Meeting_Report__c = rca.Id;
                                cam.Society_Hold_Place__c = rca.SocietyHoldPlace__c;
                                cam.Competitor__c = rca.Competitor__c;
                                // 更新报告日期和状态
                                cam.Report_approved_day__c = Date.today();
                                cam.Approved_day__c = Date.today();
                                cam.Status = '已结束';
                            }
                            break;
                        }
                    }
                    update camNoList;
                    // 更新OPD计划
                    List<OPDPlan__c> opdlist = [select id,status__c from OPDPlan__c WHERE OPDType__c = '学会' and status__c != '完毕' and Campaign__c in: cam_ids];
                    //将OPD计划的状态更新为 完毕
                    if (opdlist != null && opdlist.size() > 0) {
                        for (OPDPlan__c opdc : opdlist) {
                            opdc.Status__c= '完毕';
                        }
                        update opdlist;
                    }
                }
          }
            logstr += '\nend';
@@ -178,32 +220,32 @@
     * @param  camMap [description]
     * @return        [description]
     */
    public static Map<String,Campaign> getcampaignMap(List<String> camList){
        Map<String,Campaign> campaignMap = new Map<String,Campaign>();
    // public static Map<String,Campaign> getcampaignMap(List<String> camList){
    //     Map<String,Campaign> campaignMap = new Map<String,Campaign>();
        
        List<Campaign> camNoList = [select id,Num__c,MeetingApprovedNo__c
                                    from Campaign
                                    where MeetingApprovedNo__c in: camList];
        if (camNoList.size() > 0) {
            for (Campaign cam : camNoList) {
                campaignMap.put(cam.Num__c, cam);
            }
        }
      return campaignMap;
    //     List<Campaign> camNoList = [select id,Num__c,MeetingApprovedNo__c
    //                                 from Campaign
    //                                 where MeetingApprovedNo__c in: camList];
    //     if (camNoList.size() > 0) {
    //         for (Campaign cam : camNoList) {
    //             campaignMap.put(cam.Num__c, cam);
    //         }
    //     }
   //    return campaignMap;
      
    }
    // }
    // 必填字段验证
    private static String verify(GeData ged) {
        String result = '';
        if (String.isBlank(ged.MeetingApprovedNo)) {
            result += 'DataError: 会议决裁编码 [ MeetingApprovedNo ] is null!This data is skipped.\n';
        }
        if (String.isBlank(ged.SocietyHoldPlace)) {
            result += 'DataError: 会议日程 [ SocietyHoldPlace ] is null!This data is skipped.\n';
        }
        return result;
    }
    // private static String verify(GeData ged) {
    //     String result = '';
    //     if (String.isBlank(ged.MeetingApprovedNo)) {
    //         result += 'DataError: 会议决裁编码 [ MeetingApprovedNo ] is null!This data is skipped.\n';
    //     }
    //     if (String.isBlank(ged.SocietyHoldPlace)) {
    //         result += 'DataError: 会议日程 [ SocietyHoldPlace ] is null!This data is skipped.\n';
    //     }
    //     return result;
    // }
}