public without sharing class MaintenanceNewUpdateHandler extends Oly_TriggerHandler { private Map newMap; private Map oldMap; private List newList; private List oldList; public MaintenanceNewUpdateHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void afterInsert() { //insertMaintenance(); } protected override void afterUpdate() { updateMaintenance(); } protected override void beforeInsert() { insertMaintenance(); } public void insertMaintenance(){ system.debug('zheli:kaishi'); // List upObj = new List(); // List inObj = new List(); Map startMap = new Map(); // 用于存放合同开始日 Map endMap = new Map(); // 用于存放合同结束日 Set mcId = new Set(); // 用于存放维修合同Id // 存放维修合同Id for (Maintenance_New_Update__c nObj : newList) { mcId.add(nObj.Maintenance_Contract__c); } // 查询当前维修合同 List mcList = [SELECT Id,Contract_End_Date__c,Contract_Start_Date__c From Maintenance_Contract__c WHERE Id IN:mcId]; system.debug('zheli:'+ mcList.size()); // 给原合同日期赋值 if (mcList.size() > 0) { // 存放维修合同当前日期 for (Maintenance_Contract__c mcnObj : mcList) { startMap.put(mcnObj.Id, mcnObj.Contract_Start_Date__c); endMap.put(mcnObj.Id, mcnObj.Contract_End_Date__c); } // 赋值 for (Maintenance_New_Update__c nObj : newList) { nObj.Old_Contract_Start_Date__c = startMap.get(nObj.Maintenance_Contract__c); nObj.Old_Contract_End_Date__c = endMap.get(nObj.Maintenance_Contract__c); } } } public void updateMaintenance(){ Set mcId = new Set(); Map startMap = new Map(); Map endMap = new Map(); System.debug('jinlai====================================updateMaintenance'); // Maintenance_New_Update__c nObj = new Maintenance_New_Update__c(); for (Maintenance_New_Update__c nObj : newList) { System.debug('jinlaifor====================================for'); Maintenance_New_Update__c oObj = oldMap.get(nObj.Id); // 合同开始日/合同结束日不为空且与原来的不同、审批状态从【审批中】变成【已审批】、维修合同不为空 // if (((nObj.Contract_Start_Date__c != null && nObj.Contract_Start_Date__c != nObj.Old_Contract_Start_Date__c) || if ((nObj.Contract_Start_Date__c != null && nObj.Contract_Start_Date__c != nObj.Old_Contract_Start_Date__c) && // (nObj.Contract_End_Date__c != null && nObj.Contract_End_Date__c != nObj.Old_Contract_End_Date__c)) && nObj.Status__c == '已审批' && nObj.Maintenance_Contract__c != null && oObj.Status__c == '审批中') { // 存放维修合同Id mcId.add(nObj.Maintenance_Contract__c); // 存放合同开始日、合同结束日 startMap.put(nObj.Maintenance_Contract__c, nObj.Contract_Start_Date__c); endMap.put(nObj.Maintenance_Contract__c, nObj.Contract_End_Date__c); } } // 维修合同Id有值,查询并更新 if (mcId.size() > 0) { // 查询当前维修合同 List mcList = [SELECT Id,Contract_End_Date__c,Contract_Start_Date__c From Maintenance_Contract__c WHERE Id IN:mcId]; // 赋值并更新 if (mcList.size() > 0) { List upList = new List(); // 赋值合同开始日、合同结束日 for (Maintenance_Contract__c nObj : mcList) { nObj.Contract_Start_Date__c = startMap.get(nObj.Id); nObj.Contract_End_Date__c = endMap.get(nObj.Id); upList.add(nObj); System.debug('zheli===================================='+upList); } // 更新维修合同数据 update upList; } } } }