@isTest
private class AccountDailyUpdateBatchTest {
	
	// @isTest 
    // static void test_method_one() {
	// 	// Implement test code
	// 	Profile prof = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
	// 	List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];

	// 	List<String> classDeptStr = new List<String>();
	// 	classDeptStr.add('Department_Class_GI');
	// 	classDeptStr.add('Department_Class_ET');
	// 	classDeptStr.add('Department_Class_BF');
	// 	classDeptStr.add('Department_Class_GS');
	// 	classDeptStr.add('Department_Class_URO');
	// 	classDeptStr.add('Department_Class_GYN');
	// 	classDeptStr.add('Department_Class_ENT');
	// 	classDeptStr.add('Department_Class_OTH');
	// 	List<RecordType> rectDept = [select Id,developername from RecordType where IsActive = true and SobjectType = 'Account' and developername  in:classDeptStr];
        
	// 	Map<String,String> classDeptMap = new Map<String,String>();
    //     if (rectHp.size() == 0) {
    //         return;
    //     }
    //     for(String Str : classDeptStr){
    //     	for(RecordType rt : rectDept){
    //     		if(rt.developername == Str){
    //     			classDeptMap.put(Str, rt.Id);
    //     		}
    //     	}
    //     }
    //     User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', 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 = prof.id);
    //     insert hpOwner;

    //     Account myAccount1 = new Account(name='testaccount001',RecordTypeId = rectHp[0].Id,OwnerId = hpOwner.Id );
    //     insert myAccount1;
    //     Contact core = new Contact(email='jplumber@salesforce.com',
    //     firstname='Joe',
    //     lastname='Plumber',
    //     accountid=myAccount1.id);
    //     insert core;
    //     List<User> insertUser = new List<User>();
    //     user UserGI = New User(
            
    //         Alias = 'GI_User',
    //         Email='GI_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserGI',
    //         Firstname ='GI',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserGI@testorg.com');
    //     insertUser.add(UserGI);
    //     user UserET = New User(
            
    //         Alias = 'ET_User',
    //         Email='ET_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserET',
    //         Firstname ='ET',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserET@testorg.com');
    //     insertUser.add(UserET);
    //     user UserBF = New User(
            
    //         Alias = 'BF_User',
    //         Email='BF_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserBF',
    //         Firstname ='BF',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserBF@testorg.com');
    //     insertUser.add(UserBF);
    //     user UserGS = New User(
            
    //         Alias = 'SP_User',
    //         Email='SP_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserGS',
    //         Firstname ='GS',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserGS@testorg.com');
    //     insertUser.add(UserGS);
    //     user UserURO = New User(
            
    //         Alias = 'URO_User',
    //         Email='URO_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserURO',
    //         Firstname ='URO',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserURO@testorg.com');
    //     insertUser.add(UserURO);
    //     user UserGYN = New User(
            
    //         Alias = 'GYN_User',
    //         Email='GYN_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserGYN',
    //         Firstname ='GYN',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserGYN@testorg.com');
    //     insertUser.add(UserGYN);
    //     user UserENT = New User(
            
    //         Alias = 'ENT_User',
    //         Email='ENT_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserENT',
    //         Firstname ='ENT',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserENT@testorg.com');
    //     insertUser.add(UserENT);
    //     user UserFSE = New User(
            
    //         Alias = 'FSEUser',
    //         Email='FSE_User@testorg.com',
    //         EmailEncodingKey='UTF-8',
    //         LastName='testUserFSE',
    //         Firstname ='FSE',
    //         LanguageLocaleKey='zh_CN',
    //         LocaleSidKey='zh_CN',
    //         ProfileId = System.Label.ProfileId_SystemAdmin,
    //         TimeZoneSidKey='Asia/Shanghai',
    //         UserName='testUserFSE@testorg.com');
    //     insertUser.add(UserFSE);
    //     system.runAs(new user(Id = Userinfo.getUserId())){
    //         insert insertUser;
    //     }
    //     integer i = 0;
    //     for(user insU : insertUser){
    //         insU.Employee_No__c = 'TestU'+i;
    //         i++;
    //     }
    //     update insertUser;
    //      Map<String,String> NameTOno = New Map<String,String>();
    //     for(user usr : insertUser){
    //         NameTOno.put(usr.Id, usr.Employee_No__c);
    //     }
    //     System.Test.startTest();
    //     system.runAs(new user(Id = Userinfo.getUserId())){
    //         Account Hospital = new Account(
    //             name = 'Test Hospital',
    //             RecordTypeId = rectHp[0].Id,
    //             FSE_Main__c = UserFSE.Id,
    //             ENT_owner_ID__c = UserENT.Id,
    //             GYN_owner__c = UserGYN.Id,
    //             URO_owner_ID__c = UserURO.Id,
    //             SP_Main__c = UserGS.Id,
    //             BF_owner__c = UserBF.Id,
    //             ET_owner__c = UserET.Id,
    //             GI_Main__c = UserGI.Id
    //             );
    //             insert Hospital;
    //             Hospital.Is_Active__c = '申请中';
    //             update Hospital;
    //             Hospital.Is_Active__c ='有効';
    //             update Hospital;
    //     }
	// 	Id execBTId = Database.executeBatch(new AccountDailyUpdateBatch(), 5);
    //     System.Test.stopTest();
	// }
	
	@isTest 
    static void test_method_three() {
		// Implement test code
		Profile prof = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
		List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];

		List<String> classDeptStr = new List<String>();
		classDeptStr.add('Department_Class_GI');
		classDeptStr.add('Department_Class_ET');
		classDeptStr.add('Department_Class_BF');
		classDeptStr.add('Department_Class_GS');
		classDeptStr.add('Department_Class_URO');
		classDeptStr.add('Department_Class_GYN');
		classDeptStr.add('Department_Class_ENT');
		classDeptStr.add('Department_Class_OTH');
		List<RecordType> rectDept = [select Id,developername from RecordType where IsActive = true and SobjectType = 'Account' and developername  in:classDeptStr];
        
		Map<String,String> classDeptMap = new Map<String,String>();
        if (rectHp.size() == 0) {
            return;
        }
        for(String Str : classDeptStr){
        	for(RecordType rt : rectDept){
        		if(rt.developername == Str){
        			classDeptMap.put(Str, rt.Id);
        		}
        	}
        }
        system.runAs(new user(Id = Userinfo.getUserId())){
            Account myAccount1 = new Account(name='testaccount001',RecordTypeId = rectHp[0].Id );
            insert myAccount1;
            Contact core = new Contact(email='jplumber@salesforce.com',
            firstname='Joe',
            lastname='Plumber',
            accountid=myAccount1.id);
            insert core;
        }
        
        List<User> insertUser = new List<User>();
        user UserGI = New User(
            
            Alias = 'GI_User',
            Email='GI_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserGI',
            Firstname ='GI',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserGI@testorg.com');
        insertUser.add(UserGI);
        user UserET = New User(
            
            Alias = 'ET_User',
            Email='ET_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserET',
            Firstname ='ET',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserET@testorg.com');
        insertUser.add(UserET);
        user UserBF = New User(
            
            Alias = 'BF_User',
            Email='BF_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserBF',
            Firstname ='BF',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserBF@testorg.com');
        insertUser.add(UserBF);
        user UserGS = New User(
            
            Alias = 'SP_User',
            Email='SP_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserGS',
            Firstname ='GS',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserGS@testorg.com');
        insertUser.add(UserGS);
        user UserURO = New User(
            
            Alias = 'URO_User',
            Email='URO_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserURO',
            Firstname ='URO',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUseUROr@testorg.com');
        insertUser.add(UserURO);
        user UserGYN = New User(
            
            Alias = 'GYN_User',
            Email='GYN_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserGYN',
            Firstname ='GYN',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserGYN@testorg.com');
        insertUser.add(UserGYN);
        user UserENT = New User(
            
            Alias = 'ENT_User',
            Email='ENT_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserENT',
            Firstname ='ENT',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserENT@testorg.com');
        insertUser.add(UserENT);
        user UserFSE = New User(
            
            Alias = 'FSE_User',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE',
            Firstname ='FSE',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE@testorg.com');
        insertUser.add(UserFSE);
        user UserFSE_1 = New User(
            
            Alias = 'FSEUser1',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE1',
            Firstname ='FSE1',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE1@testorg.com');
        insertUser.add(UserFSE_1);
        user UserFSE_2 = New User(
            
            Alias = 'FSEUser2',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE2',
            Firstname ='FSE2',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE2@testorg.com');
        insertUser.add(UserFSE_2);
        user UserFSE_3 = New User(
            
            Alias = 'FSEUser3',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE3',
            Firstname ='FSE3',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE3@testorg.com');
        insertUser.add(UserFSE_3);
        user UserTeamMember1 = New User(
            
            Alias = 'TMem1',
            Email='TeamMember1@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserTeamMember1',
            Firstname ='FSE',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserTeamMember1@testorg.com');
        insertUser.add(UserTeamMember1);
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert insertUser;    
           
        }
        Account Hospital = new Account(
                    name = 'Test Hospital',
                    RecordTypeId = rectHp[0].Id,
                    FSE_Main__c = UserFSE.Id,
                    ENT_owner_ID__c = UserENT.Id,
                    GYN_owner__c = UserGYN.Id,
                    URO_owner_ID__c = UserURO.Id,
                    SP_Main__c = UserGS.Id,
                    BF_owner__c = UserBF.Id,
                    ET_owner__c = UserET.Id,
                    GI_Main__c = UserGI.Id,
                    GI_Product_Leader__c = 'testUserGSGS',
                    GS_Product_Leader__c = 'testUserGSGS',
                    GYN_Product_Leader__c = 'testUserGSGS',
                    ET_Product_Leader__c = 'testUserGSGS',
                    URO_Produc_Leader__c = 'testUserGSGS',
                    BF_Product_Leader__c = 'testUserGSGS',
                    ENT_Product_Leader__c = 'testUserGSGS',
                    FSE_GI_Vice_Leader__c = 'testUserGSGS',
                    FSE_SP_Vice_Leader__c = 'testUserGSGS',
                    Energy_LeaderStr__c = 'FSE_User,FSE_User3',
                    FSE_Extend_viceLeaderStr__c = 'FSE_User1,FSE_User3',
                    Extend_Leader_Str__c = 'FSE_User2,FSE_User'
                    );
        System.Test.startTest();
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert Hospital;
        }
        Hospital.Is_Active__c = '申请中';
        update Hospital;
        
        Hospital.Is_Active__c ='有効';
        update Hospital;
        // chenjingwu 20240108 start
        Infrastructure_Project__c project = new Infrastructure_Project__c();
        project.Name = 'Test';
        project.Province__c = '北京市';
        project.City__c = '北京市';
        project.OCSM_Hospital__c = Hospital.Id;
        insert project;
        Hospital.FSE_Main__c = UserGYN.Id;
        Hospital.ENT_owner_ID__c = UserGS.Id;
        Hospital.GYN_owner__c = UserFSE.Id;
        Hospital.URO_owner_ID__c = UserURO.Id;
        Hospital.SP_Main__c = UserENT.Id;
        Hospital.BF_owner__c = UserET.Id;
        Hospital.ET_owner__c = UserGI.Id;
        Hospital.GI_Main__c = UserBF.Id;
        update Hospital;
        // chenjingwu 20240108 end

        AccountTeamMember CreateTM = new AccountTeamMember();
        CreateTM.AccountId = Hospital.Id;
        CreateTM.UserId = UserTeamMember1.Id;
        CreateTM.TeamMemberRole = '営業担当';
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert CreateTM;   
        }
        
		//获取战略科室
			//----消化科
		List<Account> deptClassList = [select id,ParentId, name,recordType.developername from Account where RecordType.DeveloperName in:classDeptStr and parentId=:Hospital.Id ];
		
		Map<String,String> deptClassMaper = new Map<String,String>();
		for(Account acc : deptClassList){
			for(RecordType rt : rectDept){
        		if(acc.recordType.developername == rt.developername){
        			classDeptMap.put(rt.developername, acc.Id);
        		}
        	}
		}
		//在消化科增加8个科室
		List<String> deptType = new List<String>();
		deptType.add('Department_ENT');
		deptType.add('Department_GI');
		deptType.add('Department_URO');
		deptType.add('Department_GS');
		deptType.add('Department_GYN');
		deptType.add('Department_BF');
		deptType.add('Department_OTH');
		List<RecordType> rectDeptone = [select Id,developername from RecordType where IsActive = true and SobjectType = 'Account' and developername in:deptType];
		
		Map<String,String> depttypeMap = new Map<String,String>();
		for(String str : deptType){
			for(RecordType RT : rectDeptone){
				if(str == RT.developername){
					depttypeMap.put(str, RT.Id);
				}
			}
		}

		Account deptGI = new Account(
						name = '消化科',
						parentId = classDeptMap.get('Department_Class_GI'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_GI'),
						Department_Name__c = 'Test Hospital 消化科 消化科',
						RecordTypeId = depttypeMap.get('Department_GI')
						);
		Account deptENT = new Account(
						name = '耳鼻喉科',
						parentId = classDeptMap.get('Department_Class_ENT'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_ENT'),
						Department_Name__c = 'Test Hospital 消化科 耳鼻喉科',
						RecordTypeId = depttypeMap.get('Department_ENT')
						);
		Account deptURO = new Account(
						name = '泌尿科',
						parentId = classDeptMap.get('Department_Class_URO'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_URO'),
						Department_Name__c = 'Test Hospital 消化科 泌尿科',
						RecordTypeId = depttypeMap.get('Department_URO')
						);
		Account deptGS = new Account(
						name = '普外科',
						parentId = classDeptMap.get('Department_Class_GS'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_GS'),
						Department_Name__c = 'Test Hospital 消化科 普外科',
						RecordTypeId = depttypeMap.get('Department_GS')
						);
		Account deptGYN = new Account(
						name = '婦人科',
						parentId = classDeptMap.get('Department_Class_GYN'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_GYN'),
						Department_Name__c = 'Test Hospital 消化科 婦人科',
						RecordTypeId = depttypeMap.get('Department_GYN')
						);
		Account deptBF = new Account(
						name = '呼吸科',
						parentId = classDeptMap.get('Department_Class_BF'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_BF'),
						Department_Name__c = 'Test Hospital 消化科 呼吸科',
						RecordTypeId = depttypeMap.get('Department_BF')
						);
		Account deptOTH = new Account(
						name = 'その他',
						parentId = classDeptMap.get('Department_Class_OTH'),
						Hospital__c = Hospital.Id,
						Department_Class__c = classDeptMap.get('Department_Class_OTH'),
						Department_Name__c = 'Test Hospital 消化科 その他',
						RecordTypeId = depttypeMap.get('Department_OTH')
						);
        system.runAs(new user(Id = Userinfo.getUserId())){
	        insert new Account[]{deptGI,deptBF,deptGYN,deptGS,deptURO,deptENT,deptOTH};
        }
        System.Test.stopTest();
		//Account deptClassGI = new Account(
		//						name = '战略科室-消化科',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_GI')
		//						);
		//Account deptClassET = new Account(
		//						name = '战略科室-ET',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_ET')
		//						);
		//Account deptClassBF = new Account(
		//						name = '战略科室-呼吸科',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_BF')
		//						);
		//Account deptClassGS = new Account(
		//						name = '战略科室-普外科',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_GS')
		//						);
		//Account deptClassURO = new Account(
		//						name = '战略科室-泌尿科',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_URO')
		//						);
		//Account deptClassGYN = new Account(
		//						name = '战略科室-婦人科',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_GYN')
		//						);
		//Account deptClassENT = new Account(
		//						name = '战略科室-耳鼻喉科',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_ENT')
		//						);
		//Account deptClassOTH = new Account(
		//						name = '战略科室-その他',
		//						parentId = Hospital.Id,
		//						RecordTypeId = classDeptMap.get('Department_Class_OTH')
		//						);
		//insert new Account[]{deptClassGI,deptClassET,deptClassBF,deptClassGS,deptClassURO,deptClassGYN,deptClassENT,deptClassOTH};
		AccountDailyUpdateBatch.executeWebSide(Hospital.Id);
         
	}

    @isTest 
    static void test_method_two() {
        // Implement test code
        Profile prof = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
        List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];

        List<String> classDeptStr = new List<String>();
        classDeptStr.add('Department_Class_GI');
        classDeptStr.add('Department_Class_ET');
        classDeptStr.add('Department_Class_BF');
        classDeptStr.add('Department_Class_GS');
        classDeptStr.add('Department_Class_URO');
        classDeptStr.add('Department_Class_GYN');
        classDeptStr.add('Department_Class_ENT');
        classDeptStr.add('Department_Class_OTH');
        List<RecordType> rectDept = [select Id,developername from RecordType where IsActive = true and SobjectType = 'Account' and developername  in:classDeptStr];
        
        Map<String,String> classDeptMap = new Map<String,String>();
        if (rectHp.size() == 0) {
            return;
        }
        for(String Str : classDeptStr){
            for(RecordType rt : rectDept){
                if(rt.developername == Str){
                    classDeptMap.put(Str, rt.Id);
                }
            }
        }
        system.runAs(new user(Id = Userinfo.getUserId())){
            Account myAccount1 = new Account(name='testaccount001',RecordTypeId = rectHp[0].Id );
            insert myAccount1;
            Contact core = new Contact(email='jplumber@salesforce.com',
            firstname='Joe',
            lastname='Plumber',
            accountid=myAccount1.id);
            insert core;
        }
        List<User> insertUser = new List<User>();
        user UserGI = New User(
            
            Alias = 'GI_User',
            Email='GI_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserGI',
            Firstname ='GI',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserGI@testorg.com');
        insertUser.add(UserGI);
        user UserET = New User(
            
            Alias = 'ET_User',
            Email='ET_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserET',
            Firstname ='ET',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserET@testorg.com');
        insertUser.add(UserET);
        user UserBF = New User(
            
            Alias = 'BF_User',
            Email='BF_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserBF',
            Firstname ='BF',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserBF@testorg.com');
        insertUser.add(UserBF);
        user UserGS = New User(
            
            Alias = 'SP_User',
            Email='SP_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserGS',
            Firstname ='GS',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserGS@testorg.com');
        insertUser.add(UserGS);
        user UserURO = New User(
            
            Alias = 'URO_User',
            Email='URO_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserURO',
            Firstname ='URO',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUseUROr@testorg.com');
        insertUser.add(UserURO);
        user UserGYN = New User(
            
            Alias = 'GYN_User',
            Email='GYN_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserGYN',
            Firstname ='GYN',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserGYN@testorg.com');
        insertUser.add(UserGYN);
        user UserENT = New User(
            
            Alias = 'ENT_User',
            Email='ENT_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserENT',
            Firstname ='ENT',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserENT@testorg.com');
        insertUser.add(UserENT);
        user UserFSE = New User(
            
            Alias = 'FSE_User',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE',
            Firstname ='FSE',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE@testorg.com');
        insertUser.add(UserFSE);
        user UserFSE_1 = New User(
            
            Alias = 'FSEUser1',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE1',
            Firstname ='FSE1',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE1@testorg.com');
        insertUser.add(UserFSE_1);
        user UserFSE_2 = New User(
            
            Alias = 'FSEUser2',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE2',
            Firstname ='FSE2',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE2@testorg.com');
        insertUser.add(UserFSE_2);
        user UserFSE_3 = New User(
            
            Alias = 'FSEUser3',
            Email='FSE_User@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserFSE3',
            Firstname ='FSE3',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserFSE3@testorg.com');
        insertUser.add(UserFSE_3);
        user UserTeamMember1 = New User(
            
            Alias = 'TMem1',
            Email='TeamMember1@testorg.com',
            EmailEncodingKey='UTF-8',
            LastName='testUserTeamMember1',
            Firstname ='FSE',
            LanguageLocaleKey='zh_CN',
            LocaleSidKey='zh_CN',
            ProfileId = System.Label.ProfileId_SystemAdmin,
            TimeZoneSidKey='Asia/Shanghai',
            UserName='testUserTeamMember1@testorg.com');
        insertUser.add(UserTeamMember1);
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert insertUser;
        }
        Account Hospital = new Account(
                        name = 'Test Hospital',
                        RecordTypeId = rectHp[0].Id,
                        FSE_Main__c = UserFSE.Id,
                        ENT_owner_ID__c = UserENT.Id,
                        GYN_owner__c = UserGYN.Id,
                        URO_owner_ID__c = UserURO.Id,
                        SP_Main__c = UserGS.Id,
                        BF_owner__c = UserBF.Id,
                        ET_owner__c = UserET.Id,
                        GI_Main__c = UserGI.Id,
                        GI_Product_Leader__c = 'testUserGSGS',
                        GS_Product_Leader__c = 'testUserGSGS',
                        GYN_Product_Leader__c = 'testUserGSGS',
                        ET_Product_Leader__c = 'testUserGSGS',
                        URO_Produc_Leader__c = 'testUserGSGS',
                        BF_Product_Leader__c = 'testUserGSGS',
                        ENT_Product_Leader__c = 'testUserGSGS',
                        FSE_GI_Vice_Leader__c = 'testUserGSGS',
                        FSE_ENG_Vice_Leader__c = 'testUserGSGS',
                        FSE_SP_Vice_Leader__c = 'testUserGSGS',
                        Energy_LeaderStr__c = 'FSE_User,FSE_User3',
                        FSE_Extend_viceLeaderStr__c = 'FSE_User1,FSE_User3',
                        Extend_Leader_Str__c = 'FSE_User2,FSE_User'
                        );
        System.Test.startTest();
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert Hospital;
        }
        
        Hospital.Is_Active__c = '申请中';
        update Hospital;
        Hospital.Is_Active__c ='有効';
        update Hospital;

        AccountTeamMember CreateTM = new AccountTeamMember();
        CreateTM.AccountId = Hospital.Id;
        CreateTM.UserId = UserTeamMember1.Id;
        CreateTM.TeamMemberRole = '営業担当';
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert CreateTM;
        }
        
        //获取战略科室
            //----消化科
        List<Account> deptClassList = [select id,ParentId, name,recordType.developername from Account where RecordType.DeveloperName in:classDeptStr and parentId=:Hospital.Id ];
        
        Map<String,String> deptClassMaper = new Map<String,String>();
        for(Account acc : deptClassList){
            for(RecordType rt : rectDept){
                if(acc.recordType.developername == rt.developername){
                    classDeptMap.put(rt.developername, acc.Id);
                }
            }
        }
        //在消化科增加8个科室
        List<String> deptType = new List<String>();
        deptType.add('Department_ENT');
        deptType.add('Department_GI');
        deptType.add('Department_URO');
        deptType.add('Department_GS');
        deptType.add('Department_GYN');
        deptType.add('Department_BF');
        deptType.add('Department_OTH');
        List<RecordType> rectDeptone = [select Id,developername from RecordType where IsActive = true and SobjectType = 'Account' and developername in:deptType];
        
        Map<String,String> depttypeMap = new Map<String,String>();
        for(String str : deptType){
            for(RecordType RT : rectDeptone){
                if(str == RT.developername){
                    depttypeMap.put(str, RT.Id);
                }
            }
        }

        Account deptGI = new Account(
                        name = '消化科',
                        parentId = classDeptMap.get('Department_Class_GI'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_GI'),
                        Department_Name__c = 'Test Hospital 消化科 消化科',
                        RecordTypeId = depttypeMap.get('Department_GI')
                        );
        Account deptENT = new Account(
                        name = '耳鼻喉科',
                        parentId = classDeptMap.get('Department_Class_ENT'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_ENT'),
                        Department_Name__c = 'Test Hospital 消化科 耳鼻喉科',
                        RecordTypeId = depttypeMap.get('Department_ENT')
                        );
        Account deptURO = new Account(
                        name = '泌尿科',
                        parentId = classDeptMap.get('Department_Class_URO'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_URO'),
                        Department_Name__c = 'Test Hospital 消化科 泌尿科',
                        RecordTypeId = depttypeMap.get('Department_URO')
                        );
        Account deptGS = new Account(
                        name = '普外科',
                        parentId = classDeptMap.get('Department_Class_GS'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_GS'),
                        Department_Name__c = 'Test Hospital 消化科 普外科',
                        RecordTypeId = depttypeMap.get('Department_GS')
                        );
        Account deptGYN = new Account(
                        name = '婦人科',
                        parentId = classDeptMap.get('Department_Class_GYN'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_GYN'),
                        Department_Name__c = 'Test Hospital 消化科 婦人科',
                        RecordTypeId = depttypeMap.get('Department_GYN')
                        );
        Account deptBF = new Account(
                        name = '呼吸科',
                        parentId = classDeptMap.get('Department_Class_BF'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_BF'),
                        Department_Name__c = 'Test Hospital 消化科 呼吸科',
                        RecordTypeId = depttypeMap.get('Department_BF')
                        );
        Account deptOTH = new Account(
                        name = 'その他',
                        parentId = classDeptMap.get('Department_Class_OTH'),
                        Hospital__c = Hospital.Id,
                        Department_Class__c = classDeptMap.get('Department_Class_OTH'),
                        Department_Name__c = 'Test Hospital 消化科 その他',
                        RecordTypeId = depttypeMap.get('Department_OTH')
                        );
        system.runAs(new user(Id = Userinfo.getUserId())){
            insert new Account[]{deptGI,deptBF,deptGYN,deptGS,deptURO,deptENT,deptOTH};
        }
        System.Test.stopTest();
        //Account deptClassGI = new Account(
        //                      name = '战略科室-消化科',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_GI')
        //                      );
        //Account deptClassET = new Account(
        //                      name = '战略科室-ET',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_ET')
        //                      );
        //Account deptClassBF = new Account(
        //                      name = '战略科室-呼吸科',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_BF')
        //                      );
        //Account deptClassGS = new Account(
        //                      name = '战略科室-普外科',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_GS')
        //                      );
        //Account deptClassURO = new Account(
        //                      name = '战略科室-泌尿科',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_URO')
        //                      );
        //Account deptClassGYN = new Account(
        //                      name = '战略科室-婦人科',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_GYN')
        //                      );
        //Account deptClassENT = new Account(
        //                      name = '战略科室-耳鼻喉科',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_ENT')
        //                      );
        //Account deptClassOTH = new Account(
        //                      name = '战略科室-その他',
        //                      parentId = Hospital.Id,
        //                      RecordTypeId = classDeptMap.get('Department_Class_OTH')
        //                      );
        //insert new Account[]{deptClassGI,deptClassET,deptClassBF,deptClassGS,deptClassURO,deptClassGYN,deptClassENT,deptClassOTH};
        Id execBTId = Database.executeBatch(new AccountDailyUpdateBatch(2,'','','','',''), 5);
        execBTId = Database.executeBatch(new AccountDailyUpdateBatch(true), 5);
        execBTId = Database.executeBatch(new AccountDailyUpdateBatch('江南'), 5);
        
    }
	
}