public without sharing class UpdateContractAimAmountHandler extends Oly_TriggerHandler { private Map newMap; private Map oldMap; private List newList; private List oldList; public UpdateContractAimAmountHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void beforeUpdate() { changeAssume(); //SetAwaitToSendAWS();//new } protected override void afterInsert() { createAgencyTarget(); SetAwaitToSendAWS(); } protected override void afterUpdate() { createAgencyTarget(); // LHJ KWAG-BQMA89 202006 Start updateAgencyAccout(); // LHJ KWAG-BQMA89 202006 End SetAwaitToSendAWS();//old } private void createAgencyTarget() { // LD 20200807 优化account record type ID 读取方法 Start //新逻辑 Id rtId = '012100000006KW8AAM'; // 原逻辑 // Id rtId = [select Id,DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Target'].Id; // LD 20200807 优化account record type ID 读取方法 End List upsertList = new List(); for (Account nObj : newList) { //01210000000QjCNAA0 契約 if (nObj.RecordTypeId != '01210000000QjCNAA0') continue; if (nObj.Aim_Price_GIR__c != null || nObj.Aim_Price_ET__c != null || nObj.Aim_Price_SP__c != null) { Account old = null; if (oldMap != null && oldMap.containsKey(nObj.Id)) { old = oldMap.get(nObj.Id); } //List aopps = [select Id, Department_Cateogy_l__c, Aim_Price__c, OCM_Term__c, Agency__c, RecordTypeId // from Agency_Opportunity__c // where Agency_Hospital_Target__c = null and Agency__c = :nObj.ParentId and OCM_Term__c = :nObj.Contract_Fiscal_Period__c and RecordTypeId = :rtId]; //Map dclMap = new Map(); //if (aopps.size() > 0) { // for (Agency_Opportunity__c aopp : aopps) { // dclMap.put(aopp.Department_Cateogy_l__c, aopp); // } //} if (nObj.Aim_Price_GIR__c != null && (old == null || nObj.Aim_Price_GIR__c != old.Aim_Price_GIR__c)) { Agency_Opportunity__c aopp; //if (dclMap.containsKey('GIR')) { // aopp = dclMap.get('GIR'); //} else { aopp = new Agency_Opportunity__c(); aopp.Agency__c = nObj.ParentId; aopp.OCM_Term__c = nObj.Contract_Fiscal_Period__c; aopp.RecordTypeId = rtId; aopp.Name = '目标::'+aopp.OCM_Term__c+':'+nObj.Name+' GIR'; aopp.Department_Cateogy_l__c = 'GIR'; aopp.TargetInputKey__c='AmtTarget:GIR:'+aopp.OCM_Term__c+nObj.Id; //} aopp.Aim_Price__c = nObj.Aim_Price_GIR__c; upsertList.add(aopp); } if (nObj.Aim_Price_ET__c != null && (old == null || nObj.Aim_Price_ET__c != old.Aim_Price_ET__c)) { Agency_Opportunity__c aopp; //if (dclMap.containsKey('ET')) { // aopp = dclMap.get('ET'); //} else { aopp = new Agency_Opportunity__c(); aopp.Agency__c = nObj.ParentId; aopp.OCM_Term__c = nObj.Contract_Fiscal_Period__c; aopp.RecordTypeId = rtId; aopp.Name = '目标::'+aopp.OCM_Term__c+':'+nObj.Name+' ET'; aopp.Department_Cateogy_l__c = 'ET'; aopp.TargetInputKey__c='AmtTarget:ET:'+aopp.OCM_Term__c+nObj.Id; //} aopp.Aim_Price__c = nObj.Aim_Price_ET__c; upsertList.add(aopp); } if (nObj.Aim_Price_SP__c != null && (old == null || nObj.Aim_Price_SP__c != old.Aim_Price_SP__c)) { Agency_Opportunity__c aopp; //if (dclMap.containsKey('SP')) { // aopp = dclMap.get('SP'); //} else { aopp = new Agency_Opportunity__c(); aopp.Agency__c = nObj.ParentId; aopp.OCM_Term__c = nObj.Contract_Fiscal_Period__c; aopp.RecordTypeId = rtId; aopp.Name = '目标::'+aopp.OCM_Term__c+':'+nObj.Name+' SP'; aopp.Department_Cateogy_l__c = 'SP'; aopp.TargetInputKey__c='AmtTarget:SP:'+aopp.OCM_Term__c+nObj.Id; //} aopp.Aim_Price__c = nObj.Aim_Price_SP__c; upsertList.add(aopp); } } } if (upsertList.size() > 0) { upsert upsertList TargetInputKey__c; } } // LHJ KWAG-BQMA89 202006 Start private void updateAgencyAccout() { List accList = new List(); List agencyAccList = new List(); List updAgenAccList = new List(); for (Account nObj : newList) { if (oldMap.get(nObj.Id).Is_Active__c == '有効' && nObj.Is_Active__c != '有効' ) { accList.add(nObj.Id); } } if (accList.size() > 0) { agencyAccList = [select id, Agency_Campaign_Obj__c from Agency_Hospital_Link__c where Hospital__c in :accList]; for (Agency_Hospital_Link__c agenAcc : agencyAccList) { if(agenAcc.Agency_Campaign_Obj__c == true){ agenAcc.Agency_Campaign_Obj__c = false; updAgenAccList.add(agenAcc); } } if (updAgenAccList.size() > 0 ) { update updAgenAccList; } } } // LHJ KWAG-BQMA89 202006 End // fxk 担当人改变后担当发生变化给他‘√’上 2021/7/21 Start public void changeAssume() { for (Account Accs : newList) { if (Accs.GI_Main__c != null && Accs.GI_Main__c != oldMap.get(Accs.Id).GI_Main__c) { Accs.Assume_Change__c = true; } if (Accs.BF_owner__c != null && Accs.BF_owner__c != oldMap.get(Accs.Id).BF_owner__c) { Accs.Assume_Change__c = true; } if (Accs.ET_owner__c != null && Accs.ET_owner__c != oldMap.get(Accs.Id).ET_owner__c) { Accs.Assume_Change__c = true; } if (Accs.SP_Main__c != null && Accs.SP_Main__c != oldMap.get(Accs.Id).SP_Main__c) { Accs.Assume_Change__c = true; } if (Accs.URO_owner_ID__c != null && Accs.URO_owner_ID__c != oldMap.get(Accs.Id).URO_owner_ID__c) { Accs.Assume_Change__c = true; } if (Accs.GYN_owner__c != null && Accs.GYN_owner__c != oldMap.get(Accs.Id).GYN_owner__c) { Accs.Assume_Change__c = true; } if (Accs.ENT_owner_ID__c != null && Accs.ENT_owner_ID__c != oldMap.get(Accs.Id).ENT_owner_ID__c) { Accs.Assume_Change__c = true; } if (Accs.Energy_LeaderStr__c != null && Accs.Energy_LeaderStr__c != oldMap.get(Accs.Id).Energy_LeaderStr__c) { Accs.Assume_Change__c = true; } } } // fxk 担当人改变后担当发生变化给他‘√’上 2021/7/21 End // public static Map NFM601_IdMap = new Map(); private void SetAwaitToSendAWS(){ Map recordTypeIdMap = new Map(); recordTypeIdMap.put('01210000000QfmbAAC', '');//其他 recordTypeIdMap.put('01210000000QfmRAAS', '');//呼吸科 recordTypeIdMap.put('01210000000QfmMAAS', '');//妇科 recordTypeIdMap.put('01210000000QfmHAAS', '');//普外科 recordTypeIdMap.put('01210000000QfmCAAS', '');//泌尿科 recordTypeIdMap.put('01210000000Qfm7AAC', '');//消化科 recordTypeIdMap.put('01210000000Qfm2AAC', '');//耳鼻喉科 recordTypeIdMap.put('01210000000Qem1AAC', '');//经销商 recordTypeIdMap.put('01210000000QemGAAS', '');//医院 List < String > queueableAccountIdList = new List < String > (); List interfaceUserUpsertAccount = new List(); // 判断当前用户是否是接口用户和系统管理员 for (Account acc : newList) { String developerId = acc.RecordTypeId; if (recordTypeIdMap.containsKey(developerId) && ('有效'.equals(acc.Is_Active_Formula__c) || '无效'.equals(acc.Is_Active_Formula__c))) { Account old = null; if (oldMap != null && oldMap.containsKey(acc.Id)) { old = oldMap.get(acc.Id); } if (old == null) {// 新增医院/科室/经销商 if (!NFM601_IdMap.containsKey(acc.Id)) { // 判断是否是接口用户 if(UserInfo.getUserId().equals(System.Label.interfaceUserID)){ interfaceUserUpsertAccount.add(acc.Id); } else { queueableAccountIdList.add(acc.Id); } NFM601_IdMap.put(acc.Id, acc.Id); } } else { if (acc.Name != old.Name //名称变更 || acc.Salesdepartment_HP__c != old.Salesdepartment_HP__c //销售本部 || acc.State_Master__c != old.State_Master__c //省 || acc.City_Master__c != old.City_Master__c //市 || acc.Is_Active__c != old.Is_Active__c // 有效/无效 || acc.Site != old.Site //别名1 || acc.Alias_Name2__c != old.Alias_Name2__c //别名2 || acc.Abbreviation__c != old.Abbreviation__c //简称 || acc.Phone != old.Phone //电话 || acc.Postal_Code__c != old.Postal_Code__c //邮编 || acc.Address__c != old.Address__c //地址 || (developerId == '01210000000Qem1AAC' && //经销商 (acc.Business_Paper_Expiration_Date__c != old.Business_Paper_Expiration_Date__c || //营业执照有效期限 acc.Tax_Practice_Expiration_Date__c != old.Tax_Practice_Expiration_Date__c || //税务登记证有效期限 acc.Medical_Equipment_Expiration_Date__c != old.Medical_Equipment_Expiration_Date__c || //医疗器械经营企业许可证有效期限 acc.DGLicenseTo__c != old.DGLicenseTo__c || //危险化学品经营许可证效期至 acc.SPO_ApplicationNo__c != old.SPO_ApplicationNo__c))// SPO申请单号 ) { if (!NFM601_IdMap.containsKey(acc.Id)) { if(UserInfo.getUserId().equals(System.Label.interfaceUserID)){ interfaceUserUpsertAccount.add(acc.Id); } else { queueableAccountIdList.add(acc.Id); } NFM601_IdMap.put(acc.Id, acc.Id); } } } } } //Before : //if(!System.Test.isRunningTest()){ //After : to avoid mutiple execute //if(!(System.Test.isRunningTest()||System.isFuture()||System.isBatch())){ //Update by Li Jun for PIPL 20220304 if(!(System.Test.isRunningTest())){ if (queueableAccountIdList.size() > 0) { NFM601Controller.callout('', queueableAccountIdList); } if (interfaceUserUpsertAccount.size() > 0) { NFM601Controller.executefuture('', interfaceUserUpsertAccount); } } } }