public with sharing class OCSMTOTMSManageShareHandler extends Oly_TriggerHandler { /** * 20240223 you * 根据省,ET/ENG,共享办事处对应的ET/ENG窗口 */ public static void OCSMToTMS(List newList, Map newMap, List oldList, Map oldMap){ Set TmsPros = new Set(); String rowCause = Schema.Dealer_ConsumableManage__Share.RowCause.OCSMToTMSUser__c; List mpList = new List(); Map mpMap = new Map(); List temsharlist =new List(); List deletetemsharlist = new List(); for (Dealer_ConsumableManage__c newtms : newList) { if (Trigger.isInsert || (Trigger.isUpdate && newtms.ET_ENG__c != oldMap.get(newtms.Id).ET_ENG__c)) { TmsPros.add(newtms.TMS_Province__c); } } if(null !=TmsPros && TmsPros.size()>0){ mpList = [select id,Name,ET_DataWindow__c,ET_BusinessWindow__c,ET_Assistant1__c,ET_Assistant2__c,ENG_DataWindow__c,ENG_BusinessWindow__c,ENG_Assistant1__c,ENG_Assistant2__c from OCM_Management_Province__c where Name in: TmsPros]; for (OCM_Management_Province__c mp: mpList){ mpMap.put(mp.Name, mp); } } if(null!=mpMap){ for (Dealer_ConsumableManage__c nObj : newList) { if (mpMap.containsKey(nObj.TMS_Province__c)) { if(null!=nObj.ET_ENG__c && ''!= nObj.ET_ENG__c && null!=mpMap.get(nObj.TMS_Province__c)){ if(nObj.ET_ENG__c=='ET'){ if(null!=mpMap.get(nObj.TMS_Province__c).ET_DataWindow__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ET_DataWindow__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ET_DataWindow__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ET_DataWindow__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } if(null!=mpMap.get(nObj.TMS_Province__c).ET_BusinessWindow__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ET_BusinessWindow__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ET_BusinessWindow__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ET_BusinessWindow__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } if(null!=mpMap.get(nObj.TMS_Province__c).ET_Assistant1__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ET_Assistant1__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ET_Assistant1__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ET_Assistant1__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } if(null!=mpMap.get(nObj.TMS_Province__c).ET_Assistant2__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ET_Assistant2__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ET_Assistant2__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ET_Assistant2__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } }else{//ENG if(null!=mpMap.get(nObj.TMS_Province__c).ENG_DataWindow__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ENG_DataWindow__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ENG_DataWindow__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ENG_DataWindow__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } if(null!=mpMap.get(nObj.TMS_Province__c).ENG_BusinessWindow__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ENG_BusinessWindow__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ENG_BusinessWindow__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ENG_BusinessWindow__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } if(null!=mpMap.get(nObj.TMS_Province__c).ENG_Assistant1__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ENG_Assistant1__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ENG_Assistant1__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ENG_Assistant1__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } if(null!=mpMap.get(nObj.TMS_Province__c).ENG_Assistant2__c && !''.equals(mpMap.get(nObj.TMS_Province__c).ENG_Assistant2__c) && nObj.Ownerid !=mpMap.get(nObj.TMS_Province__c).ENG_Assistant2__c){ Dealer_ConsumableManage__Share tmsshare = new Dealer_ConsumableManage__Share( ParentId = nObj.Id, RowCause = rowCause, UserOrGroupId = mpMap.get(nObj.TMS_Province__c).ENG_Assistant2__c, AccessLevel = 'read'); temsharlist.add(tmsshare); } } deletetemsharlist.add(nObj.Id); } } } } // 先 Delete 后 Insert if (deletetemsharlist.size() > 0) { List deleteList = [SELECT Id FROM Dealer_ConsumableManage__Share WHERE RowCause = :rowCause AND ParentId IN :deletetemsharlist ]; delete deleteList; } if(null!=temsharlist){ insert temsharlist; } } }