public without sharing class Solution_ProgrammeTrigger extends Oly_TriggerHandler{ private Map newMap; private Map oldMap; private List newList; private List oldList; public Set solProjectId = new Set(); public Solution_ProgrammeTrigger() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void beforeInsert() { // getSolutionProjectId(); // Map solutionProJectMap = new Map(); // List solutionProJectList = [select id,Status__c,First_Proposal_Time__c from SolutionProjectRequirements__c where id = :solProjectId]; // for(SolutionProjectRequirements__c solProject : solutionProJectList){ // solutionProJectMap.put(solProject.Id, solProject); // } // List solProjectUpdateList = new List(); for(Solution_Programme__c solutionPro : newList){ if(solutionPro.Scheme_Type__c == '初次'){ solutionPro.RecordTypeId = '01210000000gUGGAA2'; // solutionPro.RecordTypeId = '012p0000000Rr3KAAS'; } if(solutionPro.Scheme_Type__c == '结案'){ solutionPro.RecordTypeId = '01210000000gUGFAA2'; // solutionPro.RecordTypeId = '012p0000000Rr3PAAS'; } } // if(solProjectUpdateList.size() > 0){ // update solProjectUpdateList; // } } protected override void beforeUpdate() { // 提交solution方案审批时,点击审批之后,更新solution方案之前,更新solution方案的状态以及solution项目需求的状态 // 获取solution项目需求的id值 getSolutionProjectId(); updateSolutionProgrammeAndProjectStatus(); } protected override void afterUpdate() { // 为solution项目需求的第一次提交日期赋值。 getSolutionProjectId(); updateSolutionProjectFirstSubDate(); } protected override void afterInsert() { } protected override void afterDelete() { } public void getSolutionProjectId(){ for(Solution_Programme__c sol : newList){ solProjectId.add(sol.SolutionProjectRequirements__c); } } public void updateSolutionProjectFirstSubDate(){ System.debug('进入after trigger '); Map solutionProJectMap = new Map(); List solutionProJectList = [select id,Status__c,First_Proposal_Time__c,Confirm_Result__c from SolutionProjectRequirements__c where id = :solProjectId]; // 更新项目需求的确认结果 start List solProjectUpdateResultList = new List(); List solutionProgrammeList = [select id,SolutionProjectRequirements__c,Confirmation_Result__c from Solution_Programme__c where SolutionProjectRequirements__c = :solProjectId and Confirmation_Result__c != '' order by CreatedDate]; Map confirmResultMap = new Map(); for(Solution_Programme__c soll : solutionProgrammeList){ confirmResultMap.put(soll.SolutionProjectRequirements__c, soll.Confirmation_Result__c); } for(SolutionProjectRequirements__c solProject : solutionProJectList){ solutionProJectMap.put(solProject.Id, solProject); if(confirmResultMap.containsKey(solProject.Id)){ if(solProject.Confirm_Result__c != confirmResultMap.get(solProject.Id)){ solProject.Confirm_Result__c = confirmResultMap.get(solProject.Id); solProjectUpdateResultList.add(solProject); } } } // 更新项目需求的确认结果 end List solProjectUpdateList = new List(); for(Solution_Programme__c sol : newList){ if(sol.Proposal_Date__c != null || sol.Submint_TF__c == true){ System.debug('solution方案的提交日期不为空'); if(solutionProJectMap.get(sol.SolutionProjectRequirements__c).First_Proposal_Time__c == null){ System.debug('solution项目需求的第一次提交日期为空'); solutionProJectMap.get(sol.SolutionProjectRequirements__c).First_Proposal_Time__c = Datetime.now(); // solProjectUpdateList.add(solutionProJectMap.get(sol.SolutionProjectRequirements__c)); } if(solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c == '03方案制作中'){ solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c = '04方案提出'; } // 自动结案 if(sol.ApprovalClosingProgramme__c == true && solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c != '07结案'){ solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c = '07结案'; } // 2020-09-25 mzy 新增 CHAN-BTJCPQ 方案类型为初案时,调回以后,项目需求的状态变回 start if(sol.Submint_TF__c == false && sol.Scheme_Type__c == '初次'){ if(solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c == '04方案提出'){ solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c = '03方案制作中'; } } // 2020-09-25 mzy 新增 CHAN-BTJCPQ 方案类型为初案时,调回以后,项目需求的状态变回 end solProjectUpdateList.add(solutionProJectMap.get(sol.SolutionProjectRequirements__c)); } // if(sol.Confirmation_Result__c != '' && sol.Confirmation_Result__c != null){ // if(){ // } // } // if(sol.Submint_TF__c == true ){ // if(solutionProJectMap.containsKey(sol.SolutionProjectRequirements__c)){ // if(solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c == '03方案制作中') // solutionProJectMap.get(sol.SolutionProjectRequirements__c).Status__c = '04方案提出'; // solProjectUpdateList.add(solutionProJectMap.get(sol.SolutionProjectRequirements__c)); // } // } } if(solProjectUpdateList.size() > 0){ update solProjectUpdateList; } if(solProjectUpdateResultList.size() > 0 ){ update solProjectUpdateResultList; } } public void updateSolutionProgrammeAndProjectStatus(){ Map solutionProJectMap = new Map(); List solutionProJectList = [select id,Status__c,First_Proposal_Time__c from SolutionProjectRequirements__c where id = :solProjectId]; for(SolutionProjectRequirements__c solProject : solutionProJectList){ solutionProJectMap.put(solProject.Id, solProject); } List solProjectUpdateList = new List(); for(Solution_Programme__c solutionPro : newList){ // 驳回无效 if(solutionPro.RejectedInvalid__c == true){ solutionPro.addError('请填写反馈结果,并按审批按钮'); } if(solutionPro.ProcessOfApproval__c == true && (solutionPro.Confirmation_Result__c == null || solutionPro.Confirmation_Result__c == '')){ solutionPro.addError('批准之前必须填写反馈结果!'); } if(solutionPro.ProcessOfApproval__c == true && solutionPro.Confirmation_Result__c != null && solutionPro.Confirmation_Result__c != ''){ if(solutionPro.Confirmation_Result__c == '01采纳/部分采纳'){ solutionPro.Status__c = '03采纳/部分采纳'; // solutionPro.Scheme_Type__c = '结案'; solutionPro.ProcessOfApproval__c = false; if(solutionProJectMap.containsKey(solutionPro.SolutionProjectRequirements__c)){ solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c).Status__c = '06已反馈'; solProjectUpdateList.add(solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c)); } } if(solutionPro.Confirmation_Result__c == '02未采纳'){ solutionPro.Status__c = '04未采纳'; // solutionPro.Scheme_Type__c = '结案'; solutionPro.ProcessOfApproval__c = false; if(solutionProJectMap.containsKey(solutionPro.SolutionProjectRequirements__c)){ solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c).Status__c = '06已反馈'; solProjectUpdateList.add(solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c)); } } if(solutionPro.Confirmation_Result__c == '04其他'){ solutionPro.Status__c = '06其他'; // solutionPro.Scheme_Type__c = '结案'; solutionPro.ProcessOfApproval__c = false; if(solutionProJectMap.containsKey(solutionPro.SolutionProjectRequirements__c)){ solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c).Status__c = '06已反馈'; solProjectUpdateList.add(solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c)); } } if(solutionPro.Confirmation_Result__c == '03跟进中'){ solutionPro.Status__c = '05营业跟进中'; // solutionPro.Scheme_Type__c = '初次'; solutionPro.ProcessOfApproval__c = false; if(solutionProJectMap.containsKey(solutionPro.SolutionProjectRequirements__c)){ solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c).Status__c = '05方案修改中'; solProjectUpdateList.add(solutionProJectMap.get(solutionPro.SolutionProjectRequirements__c)); } } } } if(solProjectUpdateList.size() > 0){ update solProjectUpdateList; } } }