public without sharing class MeetingDelayApplyTriggerHandler extends Oly_TriggerHandler { private List newList; private Map oldMap; private Map newMap; public MeetingDelayApplyTriggerHandler() { this.newList = (List) Trigger.new; this.oldMap = (Map) Trigger.oldMap; this.newMap = (Map) Trigger.newMap; } protected override void beforeUpdate() { setColumn(); } protected override void afterUpdate() { addColumn(); //lt p【学会取消合并】 20231027 start BPTips(); } protected override void afterInsert() { BPTips(); } //会议状态是备品申请中时,允许增加和修改决裁信息。会议时间不允许变更 private void BPTips(){ List camIdList = new List(); //<学会Id,会议状态> Map camstaMap = new Map(); //<学会Id,开始日期> Map camstadateMap = new Map(); //<学会Id,结束日期> Map camenddateMap = new Map(); for (meeting_delay_apply__c mda :newList ){ camIdList.add(mda.campaign__c); } List camList = [Select Id,Name,CampaignStatus__c,StartDate,EndDate from Campaign Where Id in:camIdList]; if(camList.Size() > 0){ for(Campaign cam : camList){ if(!camstaMap.containsKey(cam.Id)){ camstaMap.put(cam.Id,cam.CampaignStatus__c); camstadateMap.put(cam.Id,cam.StartDate); camenddateMap.put(cam.Id,cam.EndDate); } } } System.debug('202309212012---1'); String meetingDealyRecordId = Schema.SObjectType.meeting_delay_apply__c.getRecordTypeInfosByDeveloperName().get('MeetingPostpone').getRecordTypeId(); for (meeting_delay_apply__c mda :newList ){ System.debug('202309212012---2:'+mda.campaign__c); if(camstaMap.get(mda.campaign__c) == '备品已申请' && mda.RecordTypeId == meetingDealyRecordId){ if(mda.meeting_start_date__c != camstadateMap.get(mda.campaign__c)){ mda.meeting_start_date__c.addError('备品已申请,会议时间不允许变更。'); } if(mda.meeting_end_date__c != camenddateMap.get(mda.campaign__c)){ mda.meeting_end_date__c.addError('备品已申请,会议时间不允许变更。'); } } } } //lt p【学会取消合并】 20231027 end //当审批流程走完时 更新 市场活动相关字段 private void addColumn(){ List clist = new List(); Map cmap = new Map(); List cids = new List(); List raids = new List(); //20230711 lt DB202306243540 P:学会取消合并 add //kk 死id优化 如果报错说没有此方法,就是类的api版本不够 start String meetingDealyRecordId = Schema.SObjectType.meeting_delay_apply__c.getRecordTypeInfosByDeveloperName().get('MeetingPostpone').getRecordTypeId(); String meetingCancleRecordId = Schema.SObjectType.meeting_delay_apply__c.getRecordTypeInfosByDeveloperName().get('CancelApplication').getRecordTypeId(); String camServiceEngineerTrainingId = Schema.SObjectType.Campaign.getRecordTypeInfosByDeveloperName().get('ServiceEngineerTraining').getRecordTypeId(); //kk 死id优化 如果报错说没有此方法,就是类的api版本不够 end for (meeting_delay_apply__c mda :newList ) { //判断更新前后的状态是否不同 若不同,则判断更新后的状态是否为'已完成' //20230711 lt DB202306243540 P:学会取消合并 add && mda.RecordTypeId == meetingDealyRecordId if ((mda.status__c != oldMap.get(mda.Id).status__c) && mda.status__c == '已完成' && mda.RecordTypeId == meetingDealyRecordId) { String camId = mda.campaign__c ; Campaign cam = new Campaign(); cam.Id = camId; cam.StartDate = mda.meeting_start_date__c; cam.EndDate = mda.meeting_end_date__c; cam.PlanBackData__c = mda.dismantling_date__c; cam.Meeting_Cooperate__c = mda.Meeting_Cooperate1__c; cam.Meeting_Type__c = mda.Meeting_Type__c; cam.HostName__c = mda.HostName__c; cam.cooperatorCompany__c = mda.cooperatorCompany__c; cam.Meeting_Cooperate2__c = mda.Meeting_Cooperate2__c; cam.Meeting_Cooperate3__c = mda.Meeting_Cooperate3__c; cam.Meeting_Cooperate4__c = mda.Meeting_Cooperate4__c; cam.Status = mda.campaign_status__c; //OBPM LY 20211221 start cam.IF_Approved__c = mda.IF_Approved__c;//是否申请决裁 cam.Meeting_Approved_No__c = mda.MeetingApproved__c;//会议决裁申请 if (String.isBlank(mda.MeetingApproved__c)) { cam.MeetingApprovedNo__c = null; } else { cam.MeetingApprovedNo__c = mda.MeetingApproved__r.MeetingApprovedNo__c; } // cam.Test_Status__c = mda.campaign_status__c; //OBPM LY 20211221 end clist.add(cam); } //update by rentx 2021-01-20 SWAG-BXF5JV start 在提交申请后撤回时,回滚学会的状态 // else if ((mda.status__c != oldMap.get(mda.Id).status__c) && mda.status__c == '驳回' ) { //20230711 lt DB202306243540 P:学会取消合并 add && mda.RecordTypeId == meetingDealyRecordId else if ((mda.status__c != oldMap.get(mda.Id).status__c) && (mda.status__c == '驳回' || mda.status__c == '草案中') && mda.RecordTypeId == meetingDealyRecordId) { //update by rentx 2021-01-20 SWAG-BXF5JV end Campaign cam = new Campaign(); cam.Id = mda.campaign__c; cam.Status = mda.campaign_status__c; clist.add(cam); } //20230711 lt DB202306243540 P:学会取消合并 start if((mda.Status__c != oldMap.get(mda.Id).Status__c) && mda.Status__c == '已完成' && mda.RecordTypeId == meetingCancleRecordId){ String camId = mda.campaign__c ; Campaign cam = new Campaign(); if(mda.campaign__r.Status == '公开中' && mda.campaign__r.RecordTypeId != camServiceEngineerTrainingId){ raids.add(camId); // cam.Status = '取消申请中'; } if(mda.campaign__r.RecordTypeId == camServiceEngineerTrainingId){ cam.Mailflg_Cancel_Service__c = true; } cam.Id = camId; cam.CancelDay__c = Date.today(); cam.CancleReason__c = mda.CancleReason__c; cam.cancelApprovalDate__c = Date.today(); cam.Status = '取消'; clist.add(cam); }else if((mda.Status__c != oldMap.get(mda.Id).Status__c) && mda.Status__c == '审批中' && mda.RecordTypeId == meetingCancleRecordId){ String camId = mda.campaign__c ; Campaign cam = new Campaign(); cam.Id = camId; if(mda.campaign__r.RecordTypeId == camServiceEngineerTrainingId){ cam.CancelDate__c = Date.today(); }else{ cam.canelApplyDate__c = Date.today(); cam.Status = '取消申请中'; } clist.add(cam); }else if(((mda.Status__c != oldMap.get(mda.Id).Status__c) && mda.Status__c == '驳回' && mda.RecordTypeId == meetingCancleRecordId) || ((mda.Status__c != oldMap.get(mda.Id).Status__c) && mda.Status__c == '草案中' && mda.RecordTypeId == meetingCancleRecordId)) { String camId = mda.campaign__c ; Campaign cam = new Campaign(); cam.Id = camId; cam.canelApplyDate__c = null; if(mda.campaign__r.RecordTypeId == camServiceEngineerTrainingId){ cam.CancelDate__c = null; } if(mda.campaign__r.RecordTypeId == camServiceEngineerTrainingId && mda.campaign__r.Status == '草案中'){ cam.Status = '草案中'; }else{ cam.Status = '公开中'; } clist.add(cam); } //20230711 lt DB202306243540 P:学会取消合并 end } //20230711 lt DB202306243540 P:学会取消合并 start //备品借出申请 if(raids.size() > 0){ List raObjs = [select Id, CancelDay__c, Campaign__c, CancelApplyDay__c FROM Rental_Apply__c where Campaign__c in :raids]; for(Rental_Apply__c ra : raObjs){ ra.CancelApplyDay__c = Date.today(); } update raObjs; } //20230711 lt DB202306243540 P:学会取消合并 end if (clist.size() > 0) { update clist; } } //设置字段 经理 & 部长 //提交时设置old字段的值 private void setColumn(){ List camIds = new List(); List mlist = new List(); List uids = new List(); //kk 死id优化 如果报错说没有此方法,就是类的api版本不够 start String meetingDealyRecordId = Schema.SObjectType.meeting_delay_apply__c.getRecordTypeInfosByDeveloperName().get('MeetingPostpone').getRecordTypeId(); //kk 死id优化 如果报错说没有此方法,就是类的api版本不够 start for (meeting_delay_apply__c mda :newList ) { //判断更新前后的状态是否不同 若不同,则判断更新后的状态是否为'审批中' //20230711 lt DB202306243540 P:学会取消合并 add && mda.RecordTypeId == meetingDealyRecordId if ((mda.status__c != oldMap.get(mda.Id).status__c) && mda.status__c == '审批中' && mda.RecordTypeId == meetingDealyRecordId) { //获取当前会议延期申请对象的对应人 uids.add(mda.CreatedById); mlist.add(mda); camIds.add(mda.campaign__c ); } } if (camIds.size() == 0) { return; }else{ Map camMap = new Map(); List statusList = [SELECT Id, Status,StartDate,EndDate,PlanBackData__c, Meeting_Cooperate__c,Meeting_Type__c,HostName__c, cooperatorCompany__c,Meeting_Cooperate2__c,Meeting_Cooperate3__c,Meeting_Cooperate4__c, IF_Approved__c,Meeting_Approved_No__c FROM Campaign WHERE id in :camIds]; for (Campaign c :statusList ) { camMap.put(c.Id, c); } Map userMap = new Map(); List userList = New List(); userList = [SELECT Id, SalesManager__c, BuchangApprovalManagerSales__c FROM user WHERE id in :uids]; for (User u : userList) { userMap.put(u.Id, u); } for (meeting_delay_apply__c mda : mlist) { mda.meeting_start_date_Old__c = camMap.get(mda.campaign__c).StartDate; mda.meeting_end_date_Old__c = camMap.get(mda.campaign__c).EndDate; mda.dismantling_date_Old__c = camMap.get(mda.campaign__c).PlanBackData__c; mda.Meeting_Cooperate1_Old__c = camMap.get(mda.campaign__c).Meeting_Cooperate__c; mda.Meeting_Type_Old__c = camMap.get(mda.campaign__c).Meeting_Type__c == '主办会' ? '自办会' : camMap.get(mda.campaign__c).Meeting_Type__c; mda.HostName_Old__c = camMap.get(mda.campaign__c).HostName__c; mda.cooperatorCompany_Old__c = camMap.get(mda.campaign__c).cooperatorCompany__c; mda.Meeting_Cooperate2_Old__c = camMap.get(mda.campaign__c).Meeting_Cooperate2__c; mda.Meeting_Cooperate3_Old__c = camMap.get(mda.campaign__c).Meeting_Cooperate3__c; mda.Meeting_Cooperate4_Old__c = camMap.get(mda.campaign__c).Meeting_Cooperate4__c; mda.IF_Approved_Old__c = camMap.get(mda.campaign__c).IF_Approved__c; mda.MeetingApproved_Old__c = camMap.get(mda.campaign__c).Meeting_Approved_No__c; if (String.isNotBlank(mda.CreatedById)) { mda.manager__c = userMap.get(mda.CreatedById).SalesManager__c == null ? mda.CreatedById : userMap.get(mda.CreatedById).SalesManager__c; mda.minister__c = userMap.get(mda.CreatedById).BuchangApprovalManagerSales__c == null ? mda.CreatedById : userMap.get(mda.CreatedById).BuchangApprovalManagerSales__c; } mda.campaign_status__c = camMap.get(mda.campaign__c).Status; } /*if (shareList.size() > 0) { insert shareList; }*/ for (Campaign c : statusList) { c.Status = '变更申请中'; } update statusList; } } }