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