public with sharing class ProRegisterLinkHandler extends Oly_TriggerHandler { /* 2018-08-31 更新产品内最新产品在注册证 1.根据产品-注册证关系找出所有对应的产品 2.根据产品找出其所需最新产品注册证 */ private Map newMap; private Map oldMap; private List newList; private List oldList; public ProRegisterLinkHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void afterUpdate() { updateProduct('1'); } protected override void afterInsert() { updateProduct('1'); } protected override void afterDelete() { updateProduct('2'); } // 新建和更新产品-注册证关系时使用 private void updateProduct(string HandleType) { // 产品-注册证关系 中所有 产品ID list Product2_ID_list = new list(); // 现有产品 map map Exist_ProductMap = new map(); // 需要更新产品 list List UpdateProductlist = new list(); List currentList = new List(); if ('1'.equals(HandleType)) { currentList = newList; } else { currentList = oldList; } for (Product_Register_Link__c PRL : currentList) { Product2_ID_list.add(PRL.Product2__c); } Exist_ProductMap = new map([select ID, SFDA_Status__c from Product2 where id in: Product2_ID_list]); List allPRLList = new List(); allPRLList = [select Product2__c, Product_Register__c, Product_Register__r.PrdCompanyAddr__c, Product_Register__r.PrdCompanyAddr2__c, Product_Register__r.PrdCompanyAddr3__c, Product_Register__r.ValidFrom__c, Product_Register__r.ValidTo__c, Product_Register__r.name, Product_Register__r.BusinessScopeKey__c, Product_Register__r.RegisterNoStatus__c from Product_Register_Link__c where Product2__c in : Product2_ID_list //and If_Delete__c = false order by Product2__c, Product_Register__r.RegisterNoStatusCode__c, LastModifiedDate desc ]; String tmpProductID = ''; Map Upd_ProductMap = new Map(); Product2 temProduct = new Product2(); String temAllProdStatus = ''; String temAllProdStatus2 = ''; String temAllProdStatusAll = ''; String temAllScopeKey = ''; for (String ProId : Product2_ID_list) { temProduct = Exist_ProductMap.get(ProId); temProduct.Register_Latest__c = null; // 最新注册证ID temProduct.SFDA_Approbation_No__c = null; // CFDA注册号 temProduct.SFDA_Approbated_Date__c = null; // CFDA注册日 temProduct.SFDA_Expiration_Date__c = null; // CFDA有效期限 //if (temProduct.SFDA_Status__c != '不要') { //temProduct.ProduceCompany__c = null; // 生产企业 //} temProduct.SFDA_Approbated_Status__c = null; // CFDA注册证状态 temProduct.RegisterNo_ALL__c = null; temProduct.RegisterNo_ALL2__c = null; // 20190401 CHAN-BAPCE6 LHJ Start temProduct.RegScopeKeyAll__c = null; // 20190401 CHAN-BAPCE6 LHJ End Upd_ProductMap.put(ProId, temProduct); } for (Product_Register_Link__c temPRL : allPRLList) { if (!tmpProductID.equals(temPRL.Product2__c)) { temAllProdStatus = ''; temAllProdStatus2 = ''; temAllProdStatusAll = ''; temAllScopeKey = ''; tmpProductID = temPRL.Product2__c; temProduct = Upd_ProductMap.get(tmpProductID); temProduct.Register_Latest__c = temPRL.Product_Register__c; // 最新注册证ID temProduct.SFDA_Approbation_No__c = temPRL.Product_Register__r.name; // CFDA注册号 temProduct.SFDA_Approbated_Date__c = temPRL.Product_Register__r.ValidFrom__c; // CFDA注册日 temProduct.SFDA_Expiration_Date__c = temPRL.Product_Register__r.ValidTo__c; // CFDA有效期限 if(temPRL.Product_Register__r.Name != 'FYL') { temProduct.ProduceCompany__c = temPRL.Product_Register__r.PrdCompanyAddr__c; // 生产企业 //CHAN-C4X63A 【委托】NFM204字段“生产企业地址”优化 XHL 20210716 Start temProduct.ProduceCompany2__c = temPRL.Product_Register__r.PrdCompanyAddr2__c; temProduct.ProduceCompany3__c = temPRL.Product_Register__r.PrdCompanyAddr3__c; //CHAN-C4X63A 【委托】NFM204字段“生产企业地址”优化 XHL 20210716 End } temProduct.SFDA_Approbated_Status__c = temPRL.Product_Register__r.RegisterNoStatus__c; // CFDA注册证状态; } //// 如果注册证状态有效,记录有效注册证号 if (temPRL.Product_Register__r.RegisterNoStatus__c == '有效') { //temAllProdStatus += ';' + temPRL.Product_Register__r.name; String productRegisterName = temPRL.Product_Register__r.Name; if (temAllProdStatus.length() + productRegisterName.length() <= 240) { if (!temAllProdStatusAll.contains(productRegisterName)) { temAllProdStatus += ';' + productRegisterName; temAllProdStatusAll += ';' + productRegisterName; } //temAllProdStatus += ';' + productRegisterName; } else { if (!temAllProdStatusAll.contains(productRegisterName)) { temAllProdStatus2 += ';' + productRegisterName; temAllProdStatusAll += ';' + productRegisterName; } //temAllProdStatus2 += ';' + productRegisterName; } // 20190401 CHAN-BAPCE6 LHJ Start //if (String.isNotBlank(temPRL.Product_Register__r.BusinessScopeKey__c) && // (!temAllScopeKey.contains(temPRL.Product_Register__r.BusinessScopeKey__c))) { // temAllScopeKey += ';' + temPRL.Product_Register__r.BusinessScopeKey__c; //} String businessScopeKey = temPRL.Product_Register__r.BusinessScopeKey__c; if (String.isNotBlank(businessScopeKey)) { for(String scopeKey:businessScopeKey.split(';')){ if (!temAllScopeKey.contains(scopeKey)) { temAllScopeKey += ';' + scopeKey; } } } // 20190401 CHAN-BAPCE6 LHJ End } if (temAllProdStatus != '') { temProduct.RegisterNo_ALL__c = temAllProdStatus.substring(1, temAllProdStatus.length()); } else { temProduct.RegisterNo_ALL__c = ''; } if (temAllProdStatus2 != '') { temProduct.RegisterNo_ALL2__c = temAllProdStatus2.substring(1, temAllProdStatus2.length()); } else { temProduct.RegisterNo_ALL2__c = ''; } // 20190401 CHAN-BAPCE6 LHJ Start if (temAllScopeKey != '') { temProduct.RegScopeKeyAll__c = temAllScopeKey.substring(1, temAllScopeKey.length()); } else { temProduct.RegScopeKeyAll__c = ''; } // 20190401 CHAN-BAPCE6 LHJ End Upd_ProductMap.put(tmpProductID, temProduct); } if (Upd_ProductMap.keySet().size() > 0) { update Upd_ProductMap.values(); } } }