@isTest private class TargetCustomerAssignmentBatchTest { //SWAG-BHP42V 精琢技术 20191209 START static testMethod void UnitTest_01() { //医院 记录类型 List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; if (rectHp.size() == 0) { return; } //科室 记录类型 List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } //简档 Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; //用户 User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', Work_Location__c = '北京', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; User hpOwner2 = new User(Test_staff__c = true, LastName = 'hp2', FirstName = 'owner', Alias = 'hp2', Work_Location__c = '重庆', CommunityNickname = 'hpOwner2', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner2@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner2; //医院 Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'hp', OwnerId = hpOwner.Id); hp.FSE_GI_Main_Leader__c = hpOwner.Id; hp.FSE_SP_Main_Leader__c = hpOwner2.Id; insert hp; //战略科室 Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; //科室 Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; //OPD计划 OPDPlan__c tempOPDPlan = new OPDPlan__c(); tempOPDPlan.ThisMonthPlan__c = 1; tempOPDPlan.Status__c = '计划中'; tempOPDPlan.Account_Laboratory__c =dpt.Id; tempOPDPlan.OPD_Customers_Target__c = null; //opd计划实施日期为今天 tempOPDPlan.OPDPlan_ImplementDate__c = Date.today(); tempOPDPlan.NoOpp_Reason__c = 'HCP对应'; insert tempOPDPlan; //根据opd计划实施日期 算出本财年 Date dateToday = Date.today(); Integer year = dateToday.year(); Integer month = dateToday.month(); if (month < 4) { year -= 1; } String selectedTab = String.valueOf(year - 1867 - 1 + 'P'); //客户-目标客户 默认让opd计划和客户-目标客户的财年相同 Account_Number_of_target__c anot = new Account_Number_of_target__c(); anot.Account__c = dc.Id; anot.Account_HP__c = hp.Id; anot.OCM_Period__c = selectedTab; anot.Target_amount_170_190__c =36597; insert anot; //测试 System.Test.StartTest(); Id execBTId = Database.executeBatch(new TargetCustomerAssignmentBatch(), 10); System.Test.StopTest(); } //测试 传入一个id 指定更新某一条 batch static testMethod void UnitTest_02() { //医院 记录类型 List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; if (rectHp.size() == 0) { return; } // 科室 记录类型 List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } //简档 Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; //用户 User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', Work_Location__c = '北京', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; User hpOwner2 = new User(Test_staff__c = true, LastName = 'hp2', FirstName = 'owner', Alias = 'hp2', Work_Location__c = '重庆', CommunityNickname = 'hpOwner2', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner2@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner2; //医院 Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'hp', OwnerId = hpOwner.Id); hp.FSE_GI_Main_Leader__c = hpOwner.Id; hp.FSE_SP_Main_Leader__c = hpOwner2.Id; insert hp; //战略科室 Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; //科室 Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; //opd计划 OPDPlan__c tempOPDPlan = new OPDPlan__c(); tempOPDPlan.ThisMonthPlan__c = 1; tempOPDPlan.Status__c = '计划中'; tempOPDPlan.Account_Laboratory__c =dpt.Id; tempOPDPlan.OPD_Customers_Target__c = null; tempOPDPlan.OPDPlan_ImplementDate__c = Date.today(); tempOPDPlan.NoOpp_Reason__c = 'HCP对应'; insert tempOPDPlan; //opd计划实施日期为今天 Date dateToday = Date.today(); Integer year = dateToday.year(); Integer month = dateToday.month(); if (month < 4) { year -= 1; } String selectedTab = String.valueOf(year - 1867 - 1 + 'P'); //客户-目标客户 Account_Number_of_target__c anot = new Account_Number_of_target__c(); anot.Account__c = dc.Id; anot.Account_HP__c = hp.Id; anot.OCM_Period__c = selectedTab; anot.Target_amount_170_190__c =36597; insert anot; //测试 System.Test.StartTest(); Id execBTId = Database.executeBatch(new TargetCustomerAssignmentBatch(tempOPDPlan.Id), 10); System.Test.StopTest(); } //测试传入一批Id 批量更新batch static testMethod void UnitTest_03() { //医院 记录类型 List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; if (rectHp.size() == 0) { return; } //科室 记录类型 List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } //简档 Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; //用户 User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', Work_Location__c = '北京', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; User hpOwner2 = new User(Test_staff__c = true, LastName = 'hp2', FirstName = 'owner', Alias = 'hp2', Work_Location__c = '重庆', CommunityNickname = 'hpOwner2', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner2@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner2; //医院 Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'hp', OwnerId = hpOwner.Id); hp.FSE_GI_Main_Leader__c = hpOwner.Id; hp.FSE_SP_Main_Leader__c = hpOwner2.Id; insert hp; //战略科室 Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; //科室1 Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; //科室2 Account dpt1 = new Account(RecordTypeId = rectDpt[0].Id); dpt1.Name = '*'; dpt1.Department_Name__c = 'TestDepart1'; dpt1.ParentId = dc.Id; dpt1.Department_Class__c = dc.Id; dpt1.Hospital__c = hp.Id; insert dpt1; //opd计划1 OPDPlan__c tempOPDPlan1 = new OPDPlan__c(); tempOPDPlan1.ThisMonthPlan__c = 1; tempOPDPlan1.Status__c = '计划中'; tempOPDPlan1.Account_Laboratory__c =dpt.Id; tempOPDPlan1.OPD_Customers_Target__c = null; tempOPDPlan1.OPDPlan_ImplementDate__c = Date.today(); tempOPDPlan1.NoOpp_Reason__c = 'HCP对应'; insert tempOPDPlan1; //opd计划2 OPDPlan__c tempOPDPlan2 = new OPDPlan__c(); tempOPDPlan2.ThisMonthPlan__c = 1; tempOPDPlan2.Status__c = '计划中'; tempOPDPlan2.Account_Laboratory__c =dpt1.Id; tempOPDPlan2.OPD_Customers_Target__c = null; tempOPDPlan2.OPDPlan_ImplementDate__c = Date.today(); tempOPDPlan2.NoOpp_Reason__c = 'HCP对应'; insert tempOPDPlan2; //opd计划实施日期为今天 Date dateToday = Date.today(); Integer year = dateToday.year(); Integer month = dateToday.month(); if (month < 4) { year -= 1; } String selectedTab = String.valueOf(year - 1867 - 1 + 'P'); //客户-目标客户1 Account_Number_of_target__c anot = new Account_Number_of_target__c(); anot.Account__c = dc.Id; anot.Account_HP__c = hp.Id; anot.OCM_Period__c = selectedTab; anot.Target_amount_170_190__c =36597; insert anot; //客户-目标客户2 Account_Number_of_target__c anot1 = new Account_Number_of_target__c(); anot1.Account__c = dc.Id; anot1.Account_HP__c = hp.Id; anot1.OCM_Period__c = selectedTab; anot1.Target_amount_170_190__c =36500; insert anot1; //批量传入id List opdList = [select Id from OPDPlan__c where OPD_Customers_Target__c = null and OCM_category_ID__c != null]; List opdIdList = new List(); for( OPDPlan__c op : opdList){ opdIdList.add(op.Id); } //测试 System.Test.StartTest(); Id execBTId = Database.executeBatch(new TargetCustomerAssignmentBatch(opdIdList), 10); System.Test.StopTest(); } //SWAG-BHP42V 精琢技术 20191209 END }