From 900c50a247705d6fe8833e84d31b5d51616b7c26 Mon Sep 17 00:00:00 2001 From: buli <137736985@qq.com> Date: 星期五, 15 四月 2022 14:08:05 +0800 Subject: [PATCH] 20220415 --- force-app/main/default/classes/ProRegisterHandler.cls | 298 +++++++++++++++++++++++++---------------------------------- 1 files changed, 125 insertions(+), 173 deletions(-) diff --git a/force-app/main/default/classes/ProRegisterHandler.cls b/force-app/main/default/classes/ProRegisterHandler.cls index 6631322..f290e50 100644 --- a/force-app/main/default/classes/ProRegisterHandler.cls +++ b/force-app/main/default/classes/ProRegisterHandler.cls @@ -1,181 +1,133 @@ -public with sharing class ProRegisterHandler extends Oly_TriggerHandler { - /* 2018-08-31 鏇存柊浜у搧鍐呮渶鏂颁骇鍝佸湪娉ㄥ唽璇� - 1.鏍规嵁闇�瑕佹洿鏂扮殑浜у搧娉ㄥ唽璇佹壘鍑烘墍鏈夊搴旂殑浜у搧-娉ㄥ唽璇佸叧绯� - 2.鏍规嵁浜у搧-娉ㄥ唽璇佸叧绯绘壘鍑烘墍鏈夊搴旂殑浜у搧 - 3.鏍规嵁浜у搧鎵惧嚭鍏舵墍闇�鏈�鏂颁骇鍝佹敞鍐岃瘉 - */ - private Map<Id, Product_Register__c> newMap; - private Map<Id, Product_Register__c> oldMap; - private List<Product_Register__c> newList; - private List<Product_Register__c> oldList; +public without sharing class ProRegisterHandler { - public ProRegisterHandler() { - this.newMap = (Map<Id, Product_Register__c>) Trigger.newMap; - this.oldMap = (Map<Id, Product_Register__c>) Trigger.oldMap; - this.newList = (List<Product_Register__c>) Trigger.new; - this.oldList = (List<Product_Register__c>) Trigger.old; - } + public static void updateProduct(List<Product_Register__c> newList, Map<Id, Product_Register__c> newMap, List<Product_Register__c> oldList, Map<Id, Product_Register__c> oldMap) { - protected override void beforeInsert() { - updateLink(); - } + // 浜у搧-娉ㄥ唽璇佸叧绯� 涓墍鏈� 浜у搧ID + List<ID> Product2_ID_list = new list<ID>(); + // 鐜版湁浜у搧 map + Map<ID, Product2> Exist_ProductMap = new map<ID, Product2>(); + // 闇�瑕佹洿鏂颁骇鍝� list + List<Product2> UpdateProductlist = new list<Product2>(); + // 鏍规嵁鍙樻洿鐨勮瘉ID鎵惧埌鍏宠仈鐨勬墍鏈夌殑浜у搧 + list<Product_Register_Link__c> ExistPRLList = [select Product2__c, + Product_Register__c + from Product_Register_Link__c + where Product_Register__c in: newList + ]; - protected override void beforeUpdate() { - updateLink(); - } + for (Product_Register_Link__c PRL : ExistPRLList) { + // 浜у搧ID鐨凩IST + Product2_ID_list.add(PRL.Product2__c); + } - protected override void afterUpdate() { - updateProduct(); - } + // 閫氳繃浜у搧ID鎵惧埌璇ヤ骇鍝佹渶鏂版敞鍐岃瘉ID + Exist_ProductMap = new Map<ID, Product2> ([select ID, Register_Latest__c, registrationCode__c, clinical_product_code__c + from Product2 + where id in: Product2_ID_list + ]); - //protected override void beforeDelete() { - // updateProduct(); - //} - private void updateLink() { - for (Product_Register__c reg : newList) { - system.debug('reg.Name--->'+reg.Name); - reg.RegisterNoURL__c = EncodingUtil.urlEncode(reg.Name, 'UTF-8'); + // 閫氳繃浜у搧ID鎵惧埌鎵�鏈夋秹鍙婄殑鏈夋晥鍏崇郴 + List<Product_Register_Link__c> allPRLList = [select Product2__c, + Product_Register__c, + Product_Register__r.PrdCompanyAddr__c, + Product_Register__r.ValidFrom__c, + Product_Register__r.ValidTo__c, + Product_Register__r.Name, + Product_Register__r.ValidProductRegister__c, + Product_Register__r.ClinicalProductCode__c + from Product_Register_Link__c + where Product2__c in : Product2_ID_list + order by Product2__c, + LastModifiedDate desc + ]; + + String tmpProductID = ''; + Product2 temProduct = new Product2(); + Map<Id, Product2> UpdProMap = new Map<Id, Product2>(); + + for (Product_Register_Link__c temPRL : allPRLList) { + + if (!tmpProductID.equals(temPRL.Product2__c)) { + + tmpProductID = temPRL.Product2__c; + temProduct = Exist_ProductMap.get(tmpProductID); + temProduct.Register_Latest__c = temPRL.Product_Register__c; // 鏈�鏂版敞鍐岃瘉ID + temProduct.registrationCode__c = null; + temProduct.clinical_product_code__c = null; + } + + // 濡傛灉娉ㄥ唽璇佺姸鎬佹湁鏁�,璁板綍鏈夋晥娉ㄥ唽璇佸彿 + if (temPRL.Product_Register__r.ValidProductRegister__c ) { + if (String.isBlank(temProduct.registrationCode__c)) { + temProduct.registrationCode__c = temPRL.Product_Register__r.Name + '\n'; + } else { + if (String.isNotBlank(temPRL.Product_Register__r.Name)) { + if (temProduct.registrationCode__c.indexOf(temPRL.Product_Register__r.Name) == -1) { + temProduct.registrationCode__c += temPRL.Product_Register__r.Name + '\n'; + } + } + } + + String clinicalCode = temPRL.Product_Register__r.ClinicalProductCode__c; + if (String.isBlank(temProduct.clinical_product_code__c)) { + temProduct.clinical_product_code__c = clinicalCode;//temPRL.Product_Register__r.ClinicalProductCode__c; + } else { + + if (String.isNotBlank(clinicalCode)) { + + Map<String, String> codeMap = new Map<String, String>(); + for (String code : temProduct.clinical_product_code__c.split('/')) { + codeMap.put(code, code); + } + codeMap.put(clinicalCode, clinicalCode); + temProduct.clinical_product_code__c = ''; + for (String code : codeMap.values()) { + if (String.isBlank(temProduct.clinical_product_code__c)) { + temProduct.clinical_product_code__c = code; + } else { + temProduct.clinical_product_code__c += '/' + code; + } + } + + } + + } + } + UpdProMap.put(tmpProductID, temProduct); + } + if (UpdProMap.keySet().size() > 0) update UpdProMap.values(); + } + + //鐢ㄤ簬闄嶇被,浜у搧娉ㄥ唽璇佹洿鏂颁簡,灏辨妸浜у搧娉ㄥ唽璇佷笅鐨勪骇鍝佺殑绛夌骇绫诲埆瀛楁璧嬬┖,瑙﹀彂浜у搧鐨勮Е鍙戝櫒 + public static void checkRegistervervaldatum(List<Product_Register__c> newList, Map<Id, Product_Register__c> newMap, List<Product_Register__c> oldList, Map<Id, Product_Register__c> oldMap) { + List<String> prcList = new List<String>(); + for (Product_Register__c pr : newList) { + Product_Register__c oldpr = oldMap.get(pr.Id); + prcList.add(pr.id); + } + //鏀惧埌Map閲岋紝鐢ㄤ簬娉ㄥ唽璇佹洿鏂颁骇鍝� + Map<Id,Product2> prt2Map = new Map<Id,Product2>(); + //閫氳繃涔嬪墠瀛樺偍鐨処d鐢ㄤ簬鍏崇郴琛ㄧ殑鏌ヨ銆� + List<Product_Register_Link__c> prlList = new List<Product_Register_Link__c>(); + prlList = [select Product2__r.id,Product2__r.demoteer_Sap__c,Product2__r.Diedatvanink__c,Product_Register__r.MedPrdClass__c,Product_Register__r.Stelsedag__c,Product_Register__r.ValidTo__c,Product_Register__r.ValidFrom__c + from Product_Register_Link__c + where Product_Register__r.Id in : prcList]; + + List<ID> proIdList = new List<ID>(); + for (Product_Register_Link__c prl: prlList) { + proIdList.add(prl.Product2__r.id); } - } - private void updateProduct() { - - if (System.Label.UpdRegOnly == '1') return; - - // 浜у搧-娉ㄥ唽璇佸叧绯� 涓墍鏈� 浜у搧ID - List<ID> Product2_ID_list = new list<ID>(); - // 鐜版湁浜у搧 map - Map<ID, Product2> Exist_ProductMap = new map<ID, Product2>(); - // 闇�瑕佹洿鏂颁骇鍝� list - List<Product2> UpdateProductlist = new list<Product2>(); - // 鏍规嵁鍙樻洿鐨勮瘉ID鎵惧埌鍏宠仈鐨勬墍鏈夌殑浜у搧 - list<Product_Register_Link__c> ExistPRLList = [select Product2__c, - Product_Register__c - from Product_Register_Link__c - where Product_Register__c in: newList - ]; - - for (Product_Register_Link__c PRL : ExistPRLList) { - // 浜у搧ID鐨凩IST - Product2_ID_list.add(PRL.Product2__c); - } - - // 閫氳繃浜у搧ID鎵惧埌璇ヤ骇鍝佹渶鏂版敞鍐岃瘉ID - Exist_ProductMap = new Map<ID, Product2> ([select ID, Register_Latest__c - from Product2 - where id in: Product2_ID_list - ]); - - // 閫氳繃浜у搧ID鎵惧埌鎵�鏈夋秹鍙婄殑鏈夋晥鍏崇郴 - List<Product_Register_Link__c> 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, - // 20190401 CHAN-BAPCE6 LHJ Start - Product_Register__r.BusinessScopeKey__c, - // 20190401 CHAN-BAPCE6 LHJ End - 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 = ''; - String temAllProdStatus = ''; - String temAllProdStatus2 = ''; - String temAllProdStatusAll = ''; - // 20190401 CHAN-BAPCE6 LHJ Start - String temAllScopeKey = ''; - // 20190401 CHAN-BAPCE6 LHJ End - Product2 temProduct = new Product2(); - Map<Id, Product2> UpdProMap = new Map<Id, Product2>(); - - for (Product_Register_Link__c temPRL : allPRLList) { - - if (!tmpProductID.equals(temPRL.Product2__c)) { - tmpProductID = temPRL.Product2__c; - temProduct = Exist_ProductMap.get(tmpProductID); - temAllProdStatus = ''; - temAllProdStatus2 = ''; - temAllProdStatusAll = ''; - // 20190401 CHAN-BAPCE6 LHJ Start - temAllScopeKey = ''; - // 20190401 CHAN-BAPCE6 LHJ End - 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 銆愬鎵樸�慛FM204瀛楁鈥滅敓浜т紒涓氬湴鍧�鈥濅紭鍖� XHL 20210716 Start - temProduct.ProduceCompany2__c = temPRL.Product_Register__r.PrdCompanyAddr2__c; - temProduct.ProduceCompany3__c = temPRL.Product_Register__r.PrdCompanyAddr3__c; - //CHAN-C4X63A 銆愬鎵樸�慛FM204瀛楁鈥滅敓浜т紒涓氬湴鍧�鈥濅紭鍖� XHL 20210716 End - } - temProduct.SFDA_Approbated_Status__c = temPRL.Product_Register__r.RegisterNoStatus__c; // CFDA娉ㄥ唽璇佺姸鎬� - } - - // 濡傛灉娉ㄥ唽璇佺姸鎬佹湁鏁�,璁板綍鏈夋晥娉ㄥ唽璇佸彿 - if (temPRL.Product_Register__r.RegisterNoStatus__c == '鏈夋晥') { - // LHJ 20190809 - String productRegisterName = temPRL.Product_Register__r.Name; - if (temAllProdStatus.length() + productRegisterName.length() <= 240) { - if (!temAllProdStatusAll.contains(productRegisterName)) { - temAllProdStatus += ';' + productRegisterName; - temAllProdStatusAll += ';' + 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 - UpdProMap.put(tmpProductID, temProduct); - } - if (UpdProMap.keySet().size() > 0) update UpdProMap.values(); - } + List<Product2> por2Lsit = new List<Product2>(); + //鏌ュ嚭浜у搧鐨刬d鍜岀瓑绾х被鍒殑瀛楁 + por2Lsit = [select Id,Level_Category__c from Product2 where Id in : proIdList]; + for (Product2 pro: por2Lsit) { + pro.Level_Category__c = null; + prt2Map.put(pro.Id, pro); + } + System.debug('prt2Map='+prt2Map); + if (prt2Map.size() > 0) { + update prt2Map.values(); + } + } } \ No newline at end of file -- Gitblit v1.9.1