| // 科室担当者が変更されたら询价担当者を更新する | 
| // 询价の「询价担当人单独维护」がfalseの場合のみ更新を行う | 
| // 2016-03-09 tamaru@sunbridge | 
| trigger ChangedDepartmentOwner on Account (before update) { | 
|     Map<Id, Id> acMap = new Map<Id, Id>(); // Account, User | 
|     if (Trigger.isUpdate && Trigger.isBefore) { | 
|         System.debug('ChangedDepartmentOwner in'); | 
|         // 担当者更新対象リストアップ | 
|         //20161107::::将“战略科室-其他”的客户所有人,变更为普外科的客户所有人 | 
|         //List<Id> Parlist = new List<Id>(); | 
|         //for (Account a : Trigger.old) { | 
|         //    Parlist.add(a.Parentid); | 
|         //} | 
|         //if(Trigger.old.size()==1){ | 
|         //    List<Account> Acclist = [SELECT OwnerId  | 
|         //                            from Account  | 
|         //                            where Parentid  | 
|         //                                in :Parlist  | 
|         //                            AND Department_Class_Label__c = '普外科']; | 
|         //    String accOwnerId =''; | 
|         //    if(Acclist.size()>0){ | 
|         //       accOwnerId = Acclist[0].OwnerId; | 
|         //    } | 
|         //    for (Account ac : Trigger.new) { | 
|              | 
|         //        if(ac.Department_Class_Label__c=='其他'&&ac.OwnerId!=accOwnerId){ | 
|         //            ac.ownerid = accOwnerId; | 
|         //        } | 
|         //    } | 
|         //} | 
|          | 
|         /* | 
|             HWAG-BG682M start | 
|             1、如果各种担当值发生变化,则记录下之前的数据; | 
|             2、增加静态变量,用于accountdailyUpdatebatch 跳过用; | 
|             3、 只更新询价主担当和各科主担当不一样的数据。 | 
|          */ | 
|         for (Account ac : Trigger.new) { | 
|             if (ac.OwnerId != Trigger.Oldmap.get(ac.Id).OwnerId) { | 
|                 acMap.put(ac.Id, ac.OwnerId); | 
|             } | 
|             if(ac.FSE_Main__c != Trigger.Oldmap.get(ac.Id).FSE_Main__c ){ | 
|                 ac.FSE_Main_Old__c = Trigger.Oldmap.get(ac.Id).FSE_Main__c; | 
|             } | 
|             if(ac.FSE_Extend_viceLeaderStr__c != Trigger.Oldmap.get(ac.Id).FSE_Extend_viceLeaderStr__c ){ | 
|                 ac.FSE_Extend_viceLeaderStr_Old__c = Trigger.Oldmap.get(ac.Id).FSE_Extend_viceLeaderStr__c; | 
|             } | 
|             if(ac.GI_Main__c != Trigger.Oldmap.get(ac.Id).GI_Main__c ){ | 
|                 ac.GI_Main_Old__c = Trigger.Oldmap.get(ac.Id).GI_Main__c; | 
|             } | 
|             if(ac.GI_Product_Leader__c != Trigger.Oldmap.get(ac.Id).GI_Product_Leader__c ){ | 
|                 ac.GI_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).GI_Product_Leader__c; | 
|             } | 
|             if(ac.SP_Main__c != Trigger.Oldmap.get(ac.Id).SP_Main__c ){ | 
|                 ac.SP_Main_Old__c = Trigger.Oldmap.get(ac.Id).SP_Main__c; | 
|             } | 
|             if(ac.GS_Product_Leader__c != Trigger.Oldmap.get(ac.Id).GS_Product_Leader__c ){ | 
|                 ac.GS_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).GS_Product_Leader__c; | 
|             } | 
|             if(ac.BF_owner__c != Trigger.Oldmap.get(ac.Id).BF_owner__c ){ | 
|                 ac.BF_owner_Old__c = Trigger.Oldmap.get(ac.Id).BF_owner__c; | 
|             } | 
|             if(ac.BF_Product_Leader__c != Trigger.Oldmap.get(ac.Id).BF_Product_Leader__c ){ | 
|                 ac.BF_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).BF_Product_Leader__c; | 
|             } | 
|             if(ac.GYN_owner__c != Trigger.Oldmap.get(ac.Id).GYN_owner__c ){ | 
|                 ac.GYN_owner_Old__c = Trigger.Oldmap.get(ac.Id).GYN_owner__c; | 
|             } | 
|             if(ac.GYN_Product_Leader__c != Trigger.Oldmap.get(ac.Id).GYN_Product_Leader__c ){ | 
|                 ac.GYN_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).GYN_Product_Leader__c; | 
|             } | 
|             if(ac.ET_owner__c != Trigger.Oldmap.get(ac.Id).ET_owner__c ){ | 
|                 ac.ET_owner_Old__c = Trigger.Oldmap.get(ac.Id).ET_owner__c; | 
|             } | 
|             if(ac.ET_Product_Leader__c != Trigger.Oldmap.get(ac.Id).ET_Product_Leader__c ){ | 
|                 ac.ET_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).ET_Product_Leader__c; | 
|             } | 
|             if(ac.ENT_owner_ID__c != Trigger.Oldmap.get(ac.Id).ENT_owner_ID__c ){ | 
|                 ac.ENT_owner_ID_Old__c = Trigger.Oldmap.get(ac.Id).ENT_owner_ID__c; | 
|             } | 
|             if(ac.ENT_Product_Leader__c != Trigger.Oldmap.get(ac.Id).ENT_Product_Leader__c ){ | 
|                 ac.ENT_Product_Leader_Old__c = Trigger.Oldmap.get(ac.Id).ENT_Product_Leader__c; | 
|             } | 
|             if(ac.URO_owner_ID__c != Trigger.Oldmap.get(ac.Id).URO_owner_ID__c ){ | 
|                 ac.URO_owner_ID_Old__c = Trigger.Oldmap.get(ac.Id).URO_owner_ID__c; | 
|             } | 
|             if(ac.URO_Produc_Leader__c != Trigger.Oldmap.get(ac.Id).URO_Produc_Leader__c ){ | 
|                 ac.URO_Produc_Leader_Old__c = Trigger.Oldmap.get(ac.Id).URO_Produc_Leader__c; | 
|             } | 
|             if(ac.FSE_GI_Main_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_GI_Main_Leader__c ){ | 
|                 ac.FSE_GI_Main_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_GI_Main_Leader__c; | 
|             } | 
|             if(ac.FSE_GI_Vice_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_GI_Vice_Leader__c ){ | 
|                 ac.FSE_GI_Vice_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_GI_Vice_Leader__c; | 
|             } | 
|             if(ac.FSE_SP_Main_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_SP_Main_Leader__c ){ | 
|                 ac.FSE_SP_Main_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_SP_Main_Leader__c; | 
|             } | 
|             if(ac.FSE_SP_Vice_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_SP_Vice_Leader__c ){ | 
|                 ac.FSE_SP_Vice_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_SP_Vice_Leader__c; | 
|             } | 
|             if(ac.FSE_ENG_Main_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_ENG_Main_Leader__c ){ | 
|                 ac.FSE_ENG_Main_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_ENG_Main_Leader__c; | 
|             } | 
|             if(ac.FSE_ENG_Vice_Leader__c != Trigger.Oldmap.get(ac.Id).FSE_ENG_Vice_Leader__c ){ | 
|                 ac.FSE_ENG_Vice_Leader_Old__c = Trigger.Oldmap.get(ac.Id).FSE_ENG_Vice_Leader__c; | 
|             } | 
|             if(ac.Extend_Leader_Str__c != Trigger.Oldmap.get(ac.Id).Extend_Leader_Str__c ){ | 
|                 ac.Extend_Leader_Str_Old__c = Trigger.Oldmap.get(ac.Id).Extend_Leader_Str__c; | 
|             } | 
|             if(ac.Energy_LeaderStr__c != Trigger.Oldmap.get(ac.Id).Energy_LeaderStr__c ){ | 
|                 ac.Energy_LeaderStr_Old__c = Trigger.Oldmap.get(ac.Id).Energy_LeaderStr__c; | 
|             } | 
|         } | 
|     } | 
|      | 
|     // 対象の询价取得 | 
|     if (acMap.size() > 0 && !StaticParameter.EscapeOpportunityownerUpdate) { | 
|         List<Opportunity> updateList = [ | 
|                 SELECT Id, OwnerId, AccountId | 
|                   FROM Opportunity | 
|                 WHERE AccountId IN :acMap.keyset() | 
|                   AND owner_not_automatically_update__c = FALSE | 
|         ]; | 
|         //System.debug('updateList : ' + updateList.size()); | 
|         list<Opportunity> opUpdateList = new list<Opportunity>(); | 
|         for (Opportunity op : updateList) { | 
|             if(op.OwnerId != acMap.get(op.AccountId)){ | 
|                 op.OwnerId = acMap.get(op.AccountId); | 
|                 opUpdateList.add(op); | 
|             } | 
|   | 
|         } | 
|         if (opUpdateList.size() > 0) { | 
|             ControllerUtil.updOppList(opUpdateList); | 
|         } | 
|     } | 
|     // HWAG-BG682M end | 
| } |