public without sharing class Product2TriggerHandler { public static void upsertProductSearch(List newList, Map newMap, List oldList, Map oldMap) { if(Trigger.isAfter && (Trigger.isInsert || Trigger.isUpdate)) { List p2ids = new List(); for(Product2 p2 : newList) { p2ids.add(p2.id); } List ps = [select Id,Name,CurrencyIsoCode,Product__c From Product_Search__c Where Product__c in: p2ids]; Map psmap = new Map(); List pss = new List(); for(Product_Search__c p : ps) { psmap.put(p.Product__c,p); } for(Product2 p2 : newList) { Product_Search__c p2s; if(psmap.containsKey(p2.id)) { p2s = psmap.get(p2.id); } else { p2s = new Product_Search__c(); } p2s.Name = p2.Name; p2s.Product__c = p2.id; p2s.CurrencyIsoCode = p2.CurrencyIsoCode; pss.add(p2s); } System.debug('psssize' + pss.size()); upsert(pss); }else if(Trigger.isDelete) { for(Product2 en : newList) { en.addError('此数据不能删除'); } } } //PJ1新显微镜降类 public static void checkProduct2Level(List newList, Map newMap, List oldList, Map oldMap) { //获取产品 List p2ids = new List(); for(Product2 p2 : newList){ p2ids.add(p2.Id); } //查注册证的医疗器械分类,产品入库日期,生产日期,系统维护日。 List pro2List = new List(); if(p2ids.size()>0){ pro2List = [select Id,Product2__r.demoteer_Sap__c,Product2__r.Diedatvanink__c,Product_Register__r.Stelsedag__c,Product_Register__r.MedPrdClass__c from Product_Register_Link__c where Product2__r.Id in : p2ids]; } //根据Id存放产品所属的所有注册证下的器械分类。 Map> pro2Map = new Map>(); //存放注册证上最前的维护日 Map prSteMap = new Map(); if (pro2List.size()>0) { for (Product_Register_Link__c prl: pro2List) { if (pro2Map.containsKey(prl.Product2__r.Id)) { pro2Map.get(prl.Product2__r.Id).add(prl.Product_Register__r.MedPrdClass__c); }else { pro2Map.put(prl.Product2__r.Id, new List()); pro2Map.get(prl.Product2__r.Id).add(prl.Product_Register__r.MedPrdClass__c); } if (prSteMap.containsKey(prl.Product2__r.Id)) { if (prSteMap.get(prl.Product2__r.Id) > prl.Product_Register__r.Stelsedag__c) { prSteMap.remove(prl.Product2__r.Id); prSteMap.put(prl.Product2__r.Id,prl.Product_Register__r.Stelsedag__c); } }else { prSteMap.put(prl.Product2__r.Id,prl.Product_Register__r.Stelsedag__c); } } } System.debug('pro2Map='+pro2Map); System.debug('prSteMap='+prSteMap); //产品Id与等级类别 Map prlMap = new Map(); if (pro2Map.size()>0 && prSteMap.size()>0) { for (Product_Register_Link__c pr: pro2List) { //大在后小在前 if (pro2Map.containsKey(pr.Product2__r.Id) && prSteMap.containsKey(pr.Product2__r.Id)) { //生产日小于维护日,入库日小于维护日 if (pr.Product2__r.demoteer_Sap__c <= prSteMap.get(pr.Product2__r.Id) && pr.Product2__r.Diedatvanink__c <= prSteMap.get(pr.Product2__r.Id)) { if (pro2Map.get(pr.Product2__r.Id).contains('1') || pro2Map.get(pr.Product2__r.Id).contains('2') || pro2Map.get(pr.Product2__r.Id).contains('3')) { prlMap.put(pr.Product2__r.Id, '二类'); }else { prlMap.put(pr.Product2__r.Id, '非监管'); } }else { //入库日大于维护日 if (pr.Product2__r.Diedatvanink__c > prSteMap.get(pr.Product2__r.Id)) { //生产日大于维护日 if (pr.Product2__r.demoteer_Sap__c > prSteMap.get(pr.Product2__r.Id)) { prlMap.put(pr.Product2__r.Id, '一类'); }else if (pr.Product2__r.demoteer_Sap__c < prSteMap.get(pr.Product2__r.Id)) { //生产日小于维护日 if (pro2Map.get(pr.Product2__r.Id).contains('1')) { prlMap.put(pr.Product2__r.Id, '一类'); }else if (!pro2Map.get(pr.Product2__r.Id).contains('1') && (pro2Map.get(pr.Product2__r.Id).contains('2') || pro2Map.get(pr.Product2__r.Id).contains('3'))) { prlMap.put(pr.Product2__r.Id, '二类'); }else { prlMap.put(pr.Product2__r.Id, '非监管'); } } } } } } } System.debug('prlMap='+prlMap); for (Product2 pr2: newList) { if (prlMap.containsKey(pr2.Id)) { pr2.Level_Category__c = prlMap.get(pr2.Id); }else { pr2.Level_Category__c = null; } } } }