@isTest
public class RentalApplyEquipmentSetDetailHandlerTest {
    static List<SObject> soList = new List<SObject>();

    @testSetup
    static void setupTestData() {
        //前置数据
        System.runAs(new User(Id = Userinfo.getUserId())) {
            Oly_TriggerHandler.bypass(Product2Handler.class.getName());
            Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName());

            String flag = 'NG2';
            String d1 = '产品试用';
            String dept = '医疗华北营业本部';
            User user = new User(Test_staff__c = true);
            user.LastName = '_サンブリッジ';
            //user.FirstName = 'う';
            user.Alias = 'う';
            user.Email = 'olympusTest03@sunbridge.com';
            user.Username = 'olympusTest03@sunbridge.com';
            user.CommunityNickname = 'う';
            user.IsActive = true;
            user.EmailEncodingKey = 'ISO-2022-JP';
            user.TimeZoneSidKey = 'Asia/Tokyo';
            user.LocaleSidKey = 'ja_JP';
            user.LanguageLocaleKey = 'ja';
            user.ProfileId = System.Label.ProfileId_SystemAdmin;
            user.Province__c = '北京';
            user.Dept__c = dept;
            user.Use_Start_Date__c = Date.today().addMonths(-6);
            insert user;
            // 省
            Address_Level__c al = new Address_Level__c();
            al.Name = '東京';
            al.Level1_Code__c = 'CN-99';
            al.Level1_Sys_No__c = '999999';
            insert al;
            // 市
            Address_Level2__c al2 = new Address_Level2__c();
            al2.Level1_Code__c = 'CN-99';
            al2.Level1_Sys_No__c = '999999';
            al2.Level1_Name__c = '東京';
            al2.Name = '渋谷区';
            al2.Level2_Code__c = 'CN-9999';
            al2.Level2_Sys_No__c = '9999999';
            al2.Address_Level__c = al.id;
            insert al2;
            // 病院を作る
            Account hospital = new Account();
            String rtId = [SELECT ID FROM RecordType WHERE DeveloperName = 'HP'].Id;
            hospital.recordtypeId = rtId;
            hospital.Name = 'test hospital';
            hospital.Is_Active__c = '有効';
            hospital.Attribute_Type__c = '卫生部';
            hospital.Speciality_Type__c = '综合医院';
            hospital.Grade__c = '一级';
            hospital.OCM_Category__c = 'SLTV';
            hospital.Is_Medical__c = '医疗机构';
            hospital.State_Master__c = al.id;
            hospital.City_Master__c = al2.id;
            hospital.Town__c = '东京';
            insert hospital;
            Account[] strategicDep = [
                SELECT ID, Name
                FROM Account
                WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH'
            ];
            // 診療科を作る
            Account dep = new Account();
            String rtId1 = [SELECT ID FROM RecordType WHERE DeveloperName = 'Department_OTH'].Id;
            dep.recordtypeId = rtId1;
            dep.Name = 'test dep1';
            dep.AgentCode_Ext__c = '9999999';
            dep.ParentId = strategicDep[0].Id;
            dep.Department_Class__c = strategicDep[0].Id;
            dep.Hospital__c = hospital.Id;
            insert dep;

            Contact contact2 = new Contact();
            contact2.AccountId = dep.Id;
            //contact2.FirstName = '責任者';
            contact2.LastName = 'test1经销商';
            insert contact2;

            Product2 pro1 = new Product2(
                Name = 'name01',
                IsActive = true,
                Family = 'GI',
                Fixture_Model_No__c = 'n01',
                Serial_Lot_No__c = 'S/N tracing',
                Fixture_Model_No_T__c = 'n01',
                Asset_Model_No__c = 'Pro1',
                ProductCode_Ext__c = 'pc01',
                Manual_Entry__c = false
            );
            Product2 pro2 = new Product2(
                Name = 'name02',
                IsActive = true,
                Family = 'GI',
                Fixture_Model_No__c = 'n02',
                Serial_Lot_No__c = 'Lot tracing',
                Fixture_Model_No_T__c = 'n02',
                Asset_Model_No__c = 'Pro2',
                ProductCode_Ext__c = 'pc02',
                Manual_Entry__c = false
            );
            Product2 pro3 = new Product2(
                Name = 'name03',
                IsActive = true,
                Family = 'GI',
                Fixture_Model_No__c = 'n03',
                Serial_Lot_No__c = 'Lot tracing',
                Fixture_Model_No_T__c = 'n03',
                Asset_Model_No__c = 'Pro3',
                ProductCode_Ext__c = 'pc03',
                Manual_Entry__c = false
            );
            Product2 pro4 = new Product2(
                Name = 'name04',
                IsActive = true,
                Family = 'GI',
                Fixture_Model_No__c = 'n04',
                Serial_Lot_No__c = 'Lot tracing',
                Fixture_Model_No_T__c = 'n04',
                Asset_Model_No__c = 'Pro4',
                ProductCode_Ext__c = 'pc04',
                Manual_Entry__c = false
            );
            insert new List<Product2>{ pro1, pro2, pro3, pro4 };
                
            RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' and DeveloperName = 'Opportunity' ];
            
            Opportunity opp1 = new Opportunity(
                Name='testOpp1',
                StageName='引合',
                CloseDate=Date.today(),
                AccountId=dep.Id,
                Competitor__c ='A',
                Click_Close_Date__c = null,
                RecordType = rectOpp
                );
            insert opp1;
            //注残
            Statu_Achievements__c Sac = new Statu_Achievements__c(
                name = 'zhucan_one',
                Opportunity__c = opp1.id,
                DeliveryDate__c = Date.today(),
                ContractNO__c = 'ContractNO1',
                ContractAmount__c = 1000
            );
            insert Sac;

            //备品借出申请
            Rental_Apply__c raObj = new Rental_Apply__c();
            raObj.Name = 'testra';
            raObj.OwnerId = user.Id;
            raObj.Statu_Achievements__c= Sac.Id;
            raObj.Follow_UP_Opp__c=opp1.Id;
            raObj.Product_category__c = 'GI';
            raObj.Demo_purpose1__c = '产品试用';
            raObj.demo_purpose2__c = '已购待货';
            raObj.direct_send__c = '医疗机构';
            raObj.Loaner_received_staff__c = '王五';
            raObj.Loaner_received_staff_phone__c = '110';
            raObj.direct_shippment_address__c = '北京市';
            raObj.Hospital__c = hospital.Id;
            raObj.Strategic_dept__c = strategicDep[0].Id;
            raObj.Account__c = dep.Id;
            raObj.Request_shipping_day__c = Date.toDay();
            //raObj.Hope_Lonaer_date_Num__c = 16;
            //raObj.Request_return_day__c = Date.toDay();
            raObj.Phone_number__c = '1234567890';
            raObj.Request_approval_time__c = Datetime.newInstance(1970, 1, 1);
            raObj.Loaner_medical_Staff__c = contact2.Id;
            raObj.Return_to_wh_staff__c=null;
            if ('协议借用' == d1) {
                raObj.DB_loaner_request__c = '123';
                raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(10);
                if (false) {
                    raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1);
                }
            }
            insert raObj;

            Rental_Apply__c raObj2 = new Rental_Apply__c();
            raObj2.Name = 'fuckyou';
            raObj2.OwnerId = user.Id;
            raObj2.Product_category__c = 'SP';
            raObj2.Demo_purpose1__c = '产品试用';
            raObj2.demo_purpose2__c = '已购待货';
            raObj2.Statu_Achievements__c= Sac.Id;
            raObj2.direct_send__c = '医疗机构';
            raObj2.Loaner_received_staff__c = 'van';
            raObj2.Loaner_received_staff_phone__c = '110';
            raObj2.direct_shippment_address__c = '昆明市';
            raObj2.Hospital__c = hospital.Id;
            raObj2.Strategic_dept__c = strategicDep[0].Id;
            raObj2.Account__c = dep.Id;
            raObj2.Follow_UP_Opp__c=opp1.Id;
            raObj2.Request_shipping_day__c = Date.toDay();
            //raObj2.Hope_Lonaer_date_Num__c = 17;
            //raObj.Request_return_day__c = Date.toDay();
            raObj2.Phone_number__c = '1234567880';
            raObj2.Request_approval_time__c = Datetime.newInstance(1970, 1, 1);
            raObj2.Loaner_medical_Staff__c = contact2.Id;
            raObj2.Return_to_wh_staff__c=null;
            if ('协议借用' == d1) {
                raObj2.DB_loaner_request__c = '123';
                raObj2.AgreementBorrowingExtensionDate__c = Date.today().addDays(10);
                if (false) {
                    raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1);
                }
            }
            insert raObj2;

            // 备品配套
            List<Fixture_Set__c> fsObjls = new List<Fixture_Set__c>();
            Fixture_Set__c fsObj1 = new Fixture_Set__c();
            fsObj1.Name = 'set1';
            fsObj1.Fixture_Set_Body_Model_No__c = 'modelNo1';
            fsObj1.Loaner_name__c = 'name1';
            fsObjls.add(fsObj1);

            Fixture_Set__c fsObj2 = new Fixture_Set__c();
            fsObj2.Name = 'set2';
            fsObj2.Fixture_Set_Body_Model_No__c = 'modelNo2';
            fsObj2.Loaner_name__c = 'name';
            fsObjls.add(fsObj2);
            insert fsObjls;

            //备品配套明细
            List<Fixture_Set_Detail__c> fsdObjAls = new List<Fixture_Set_Detail__c>();
            Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c();
            // 备品配套明细
            fsdObjA1.Name = '备品配套明细名1';
            fsdObjA1.Name_CHN_Created__c = '中文名称1';
            fsdObjA1.Product2__c = pro1.Id;
            fsdObjA1.Fixture_Set__c = fsObj1.Id;
            fsdObjA1.Is_Body__c = true;
            fsdObjA1.Is_Optional__c = false;
            fsdObjA1.UniqueKey__c = fsObj1.Id + ':' + pro1.Id;
            fsdObjA1.SortInt__c = 1;
            fsdObjA1.Quantity__c = 1;
            fsdObjAls.add(fsdObjA1);

            Fixture_Set_Detail__c fsdObjA2 = new Fixture_Set_Detail__c();
            fsdObjA2.Name = '备品配套明细名2';
            fsdObjA2.Name_CHN_Created__c = '中文名称2';
            fsdObjA2.Product2__c = pro2.Id;
            fsdObjA2.Fixture_Set__c = fsObj1.Id;
            fsdObjA2.Is_Body__c = false;
            fsdObjA2.Is_Optional__c = true;
            fsdObjA2.UniqueKey__c = fsObj1.Id + ':' + pro2.Id;
            fsdObjA2.SortInt__c = 2;
            fsdObjA2.Quantity__c = 1;
            fsdObjA2.Is_OneToOne__c = true;
            fsdObjAls.add(fsdObjA2);

            insert fsdObjAls;

            Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c();
            // 借出备品配套一览
            raesObj.Rental_Apply__c = raObj.Id;
            raesObj.Fixture_Set__c = fsObj1.Id;
            raesObj.Cancel_Select__c = false;
            raesObj.Rental_Start_Date__c = Date.toDay();
            raesObj.Rental_End_Date__c = Date.toDay();
            raesObj.IndexFromUniqueKey__c = 1;
            raesObj.UniqueKey__c = '1:' + fsObj1.Id + ':1';
            insert raesObj;

            // 保有设备C (只有附属品 个体管理)
            Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus');
            assetC1.RecordTypeId = System.Label.Asset_RecordType;
            assetC1.SerialNumber = 'assetC1';
            assetC1.Name = 'assetC1';
            assetC1.AccountId = dep.Id;
            assetC1.Department_Class__c = strategicDep[0].Id;
            assetC1.Hospital__c = hospital.Id;
            assetC1.Product2Id = pro4.Id;
            assetC1.Quantity = 1;
            assetC1.Status = '有库存';
            assetC1.Manage_type__c = '个体管理';
            assetC1.Internal_asset_location__c = '北京 备品中心';
            assetC1.Loaner_accsessary__c = true;
            assetC1.Delete_Flag__c = false;
            assetC1.Freeze_sign__c = false;
            assetC1.Out_of_wh__c = 0;

            // 保有设备
            Asset asset = new Asset(Asset_Owner__c = 'Olympus');
            asset.RecordTypeId = System.Label.Asset_RecordType;
            asset.SerialNumber = 'asset';
            asset.Name = 'asset';
            asset.AccountId = dep.Id;
            asset.Department_Class__c = strategicDep[0].Id;
            asset.Hospital__c = hospital.Id;
            asset.Product2Id = pro4.Id;
            asset.Quantity = 1;
            asset.Status = '有库存';
            asset.Manage_type__c = '个体管理';
            asset.Internal_asset_location__c = '北京 备品中心';
            asset.Loaner_accsessary__c = true;
            asset.Delete_Flag__c = false;
            asset.Freeze_sign__c = false;
            asset.Out_of_wh__c = 0;
            insert new List<Asset>{ assetC1, asset };

            List<Rental_Apply_Equipment_Set_Detail__c> reasll = new List<Rental_Apply_Equipment_Set_Detail__c>();

            Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c();
            raesdObj1.Rental_Apply__c = raObj.Id;
            raesdObj1.Fixture_Set_Detail__c = fsdObjA1.Id;
            raesdObj1.Rental_Num__c = 1;
            raesdObj1.Queue_Number__c = 2;
            raesdObj1.Is_Body__c = true;
            raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id;
            raesdObj1.IndexFromUniqueKey__c = 1;
            raesdObj1.UniqueKey__c = '1:' + raesObj.Id + ':' + fsdObjA1.Id + ':1';
            raesdObj1.FSD_OneToOneAccessory_Cnt__c = 2;
            raesdObj1.FSD_Is_Optional__c = false;
            raesdObj1.FSD_Is_OneToOne__c = false;
            raesdObj1.ApplyPersonAppended__c = false;
            raesdObj1.FSD_Fixture_Model_No__c = 'n01';
            raesdObj1.Fixture_Model_No_text__c = 'n01';
            raesdObj1.Salesdepartment_before__c = '1.华北营业本部';
            raesdObj1.Internal_asset_location_before__c = '北京 备品中心';
            raesdObj1.Product_category_text__c = 'GI';
            raesdObj1.Equipment_Type_text__c = '产品试用';
            raesdObj1.Cancel_Select__c = false;
            raesdObj1.IsAdjust__c = true;
            raesdObj1.DataMigration_Flag__c = false;
            raesdObj1.Inspection_result__c = 'NG';
            raesdObj1.Inspection_result_NG__c = '维修';
            raesdObj1.Asset__c = asset.id;
            reasll.add(raesdObj1);

            Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c();
            raesdObj2.Rental_Apply__c = raObj.Id;
            raesdObj2.Fixture_Set_Detail__c = fsdObjA2.Id;
            raesdObj2.Rental_Num__c = 1;
            raesdObj2.Queue_Number__c = 3;
            raesdObj2.Is_Body__c = true;
            raesdObj2.Rental_Apply_Equipment_Set__c = raesObj.Id;
            raesdObj2.IndexFromUniqueKey__c = 2;
            raesdObj2.UniqueKey__c = '2:' + raesObj.Id + ':' + fsdObjA2.Id + ':2';
            raesdObj2.FSD_OneToOneAccessory_Cnt__c = 2;
            raesdObj2.FSD_Is_Optional__c = false;
            raesdObj2.FSD_Is_OneToOne__c = true;
            raesdObj2.ApplyPersonAppended__c = false;
            raesdObj2.FSD_Fixture_Model_No__c = 'n02';
            raesdObj2.Fixture_Model_No_text__c = 'n02';
            raesdObj2.Salesdepartment_before__c = '1.华北营业本部';
            raesdObj2.Internal_asset_location_before__c = '北京 备品中心';
            raesdObj2.Product_category_text__c = 'GI';
            raesdObj2.Equipment_Type_text__c = '学会展会';
            raesdObj2.Cancel_Select__c = false;
            raesdObj2.IsAdjust__c = true;
            raesdObj2.DataMigration_Flag__c = false;
            raesdObj2.Inspection_result__c = 'NG';
            raesdObj2.Inspection_result_NG__c = '维修';
            raesdObj2.Asset__c = assetC1.id;
            reasll.add(raesdObj2);

            Rental_Apply_Equipment_Set_Detail__c raesdObj3 = new Rental_Apply_Equipment_Set_Detail__c();
            raesdObj3.Rental_Apply__c = raObj2.Id;
            raesdObj3.Fixture_Set_Detail__c = fsdObjA2.Id;
            raesdObj3.Rental_Num__c = 1;
            raesdObj3.Queue_Number__c = 4;
            raesdObj3.Is_Body__c = true;
            raesdObj3.Rental_Apply_Equipment_Set__c = raesObj.Id;
            raesdObj3.IndexFromUniqueKey__c = 3;
            raesdObj3.UniqueKey__c = '3:' + raesObj.Id + ':' + fsdObjA2.Id + ':3';
            raesdObj3.FSD_OneToOneAccessory_Cnt__c = 2;
            raesdObj3.FSD_Is_Optional__c = false;
            raesdObj3.FSD_Is_OneToOne__c = true;
            raesdObj3.ApplyPersonAppended__c = false;
            raesdObj3.FSD_Fixture_Model_No__c = 'n02';
            raesdObj3.Fixture_Model_No_text__c = 'n02';
            raesdObj3.Salesdepartment_before__c = '1.华北营业本部';
            raesdObj3.Internal_asset_location_before__c = '北京 备品中心';
            raesdObj3.Product_category_text__c = 'GI';
            raesdObj3.Equipment_Type_text__c = '学会展会';
            raesdObj3.Cancel_Select__c = false;
            raesdObj3.IsAdjust__c = true;
            raesdObj3.DataMigration_Flag__c = false;
            raesdObj3.Inspection_result__c = 'NG';
            raesdObj3.Inspection_result_NG__c = '维修';
            raesdObj3.Asset__c = assetC1.id;
            reasll.add(raesdObj3);

            Rental_Apply_Equipment_Set_Detail__c raesdObj4 = new Rental_Apply_Equipment_Set_Detail__c();
            raesdObj4.Rental_Apply__c = raObj.Id;
            raesdObj4.Fixture_Set_Detail__c = fsdObjA2.Id;
            raesdObj4.Rental_Num__c = 1;
            raesdObj4.Queue_Number__c = 4;
            raesdObj4.Is_Body__c = true;
            raesdObj4.Rental_Apply_Equipment_Set__c = raesObj.Id;
            raesdObj4.IndexFromUniqueKey__c = 4;
            raesdObj4.UniqueKey__c = '4:' + raesObj.Id + ':' + fsdObjA2.Id + ':4';
            raesdObj4.FSD_OneToOneAccessory_Cnt__c = 2;
            raesdObj4.FSD_Is_Optional__c = false;
            raesdObj4.FSD_Is_OneToOne__c = true;
            raesdObj4.ApplyPersonAppended__c = false;
            raesdObj4.FSD_Fixture_Model_No__c = 'n02';
            raesdObj4.Fixture_Model_No_text__c = 'n02';
            raesdObj4.Salesdepartment_before__c = '1.华北营业本部';
            raesdObj4.Internal_asset_location_before__c = '北京 备品中心';
            raesdObj4.Product_category_text__c = 'GI';
            raesdObj4.Equipment_Type_text__c = '学会展会';
            raesdObj4.Cancel_Select__c = false;
            raesdObj4.IsAdjust__c = false;
            raesdObj4.DataMigration_Flag__c = false;
            raesdObj4.Inspection_result__c = 'SP';
            raesdObj4.Inspection_result_NG__c = '维修';
            raesdObj4.Asset__c = assetC1.id;
            reasll.add(raesdObj4);

            Rental_Apply_Equipment_Set_Detail__c raesdObj5 = new Rental_Apply_Equipment_Set_Detail__c();
            raesdObj5.Rental_Apply__c = raObj.Id;
            raesdObj5.Fixture_Set_Detail__c = fsdObjA2.Id;
            raesdObj5.Rental_Num__c = 1;
            raesdObj5.Queue_Number__c = 4;
            raesdObj5.Is_Body__c = true;
            raesdObj5.Rental_Apply_Equipment_Set__c = raesObj.Id;
            raesdObj5.IndexFromUniqueKey__c = 5;
            raesdObj5.UniqueKey__c = '5:' + raesObj.Id + ':' + fsdObjA2.Id + ':5';
            raesdObj5.FSD_OneToOneAccessory_Cnt__c = 2;
            raesdObj5.FSD_Is_Optional__c = false;
            raesdObj5.FSD_Is_OneToOne__c = true;
            raesdObj5.ApplyPersonAppended__c = false;
            raesdObj5.FSD_Fixture_Model_No__c = 'n02';
            raesdObj5.Fixture_Model_No_text__c = 'n02';
            raesdObj5.Salesdepartment_before__c = '1.华北营业本部';
            raesdObj5.Internal_asset_location_before__c = '北京 备品中心';
            raesdObj5.Product_category_text__c = 'SP';
            raesdObj5.Equipment_Type_text__c = '学会展会';
            raesdObj5.Cancel_Select__c = false;
            raesdObj5.IsAdjust__c = false;
            raesdObj5.DataMigration_Flag__c = false;
            raesdObj5.Inspection_result__c = 'SP';
            raesdObj5.Inspection_result_NG__c = '维修';
            raesdObj5.Asset__c = assetC1.id;
            reasll.add(raesdObj5);

            insert reasll;
        }
    }

    static List<User> setQueueData() {
        StaticParameter.EscapeNFM001AgencyContractTrigger = true;
        StaticParameter.EscapeNFM001Trigger = true;
        Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName());
        Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName());
        Rental_Apply__c raObj;
        List<Fixture_Set__c> fsObjs;
        List<Fixture_Set_Detail__c> fsdObjs;
        Rental_Apply_Equipment_Set__c raesObj;
        Test.startTest();
        List<User> us = getUser();
        //系统管理员创建数据
        System.runAs(us[0]) {
            //创建数据
            // setupTestData(us[0], us[1]);
            //备品配套明细check
            fsdObjs = [SELECT Id FROM Fixture_Set_Detail__c];
            System.assertEquals(fsdObjs.size(), 2);
            //备品配套check
            fsObjs = [SELECT Id FROM Fixture_Set__c];
            System.assertEquals(fsObjs.size(), 1);
            //备品借出申请check
            List<Rental_Apply__c> raObjs = [
                SELECT Id, Status__c, RA_Status__c, RA_Status_Text__c, Name, Phone_number__c, Loaner_medical_Staff__c
                FROM Rental_Apply__c
            ];
            System.assertEquals(raObjs.size(), 1);
            raObj = raObjs[0];
            //备品借出一览check
            List<Rental_Apply_Equipment_Set__c> raesObjs = [SELECT Id, First_RAESD__c, Fixture_Set__c FROM Rental_Apply_Equipment_Set__c];
            System.assertEquals(raesObjs.size(), 1);
            System.assertNotEquals(raesObjs[0].First_RAESD__c, null);
            raesObj = raesObjs[0];

            //申请状态check
            System.assertEquals(raObj.Status__c, '草案中');
            System.assertEquals(raObj.RA_Status__c, '草案中');
            System.assertEquals(raObj.RA_Status__c, raObj.RA_Status_Text__c);
            //申请状态更新
            raObj.Status__c = '已批准';
            raObj.Add_Approval_Status__c = '草案中';
            Datetime d1 = Datetime.now().AddDays(-2);
            Datetime d2 = Datetime.now().AddDays(-1);
            //设置申请审批时间
            raObj.Request_demo_time__c = d1;
            raObj.Request_approval_time__c = d2;
            update raObj;
            raObjs = [
                SELECT
                    Id,
                    Request_approval_time__c,
                    Request_demo_time__c,
                    Status__c,
                    RA_Status__c,
                    RA_Status_Text__c,
                    Name,
                    Product_category__c,
                    Demo_purpose1__c,
                    demo_purpose2__c,
                    direct_send__c,
                    Loaner_received_staff__c,
                    Loaner_received_staff_phone__c,
                    direct_shippment_address__c,
                    Hospital__c,
                    Strategic_dept__c,
                    Account__c,
                    Request_shipping_day__c,
                    Request_return_day__c,
                    Phone_number__c,
                    Loaner_medical_Staff__c
                FROM Rental_Apply__c
            ];
            System.assertEquals(raObjs.size(), 1);
            raObj = raObjs[0];
            System.assertEquals(raObj.RA_Status__c, raObj.RA_Status_Text__c);
            System.assertEquals(raObj.Request_demo_time__c, d1);
            System.assertEquals(raObj.Request_approval_time__c, d2);

            List<Rental_Apply_Equipment_Set_Detail__c> raesds = [
                SELECT Id, Is_Body__c, Fixture_Model_No_F__c, Is_First_RAESD_F__c, Fixture_Set_Detail__c
                FROM Rental_Apply_Equipment_Set_Detail__c
                ORDER BY Is_Body__c DESC
            ];
            System.assertEquals(raesds.size(), 2);
            List<Asset> ass = [
                SELECT Id, Fixture_Model_No_F__c
                FROM Asset
                ORDER BY Loaner_accsessary__c DESC
            ];
            System.assertEquals(ass.size(), 2);
            //分配
            for (Rental_Apply_Equipment_Set_Detail__c raesd : raesds) {
                for (Asset asse : ass) {
                    if (raesd.Fixture_Model_No_F__c == asse.Fixture_Model_No_F__c) {
                        raesd.Asset__c = asse.Id;
                        raesd.Select_Time__c = Datetime.now();
                    }
                }
            }
            update raesds;

            ass = [SELECT Id, Last_Reserve_RAES_Detail__c, Fixture_Model_No_F__c FROM Asset ORDER BY Loaner_accsessary__c];
            System.assertEquals(ass.size(), 2);
            System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id);
            System.assertEquals(ass[1].Last_Reserve_RAES_Detail__c, null);

            Rental_Apply__c ra = raObj.clone(false);
            Rental_Apply__c ra1 = raObj.clone(false);
            ra.Status__c = '草案中';
            ra1.Status__c = '草案中';
            ra.Hope_Lonaer_date_Num__c = 1;
            ra1.Hope_Lonaer_date_Num__c = 1;
            insert new List<Rental_Apply__c>{ ra, ra1 };

            Map<Id, Rental_Apply__c> raMap = new Map<Id, Rental_Apply__c>(
                [SELECT Id, Status__c, RA_Status__c, RequestNoJoinStr2__c FROM Rental_Apply__c]
            );

            Rental_Apply_Equipment_Set__c raes = raesObj.clone(false);
            raes.Rental_Apply__c = ra.Id;
            raes.Rental_End_Date__c = Date.today().AddDays(4);
            raes.Rental_Start_Date__c = Date.today();
            raes.Rental_Start_Date__c = Date.today();
            raes.IndexFromUniqueKey__c = 2;
            // raes.UniqueKey__c = raMap.get(ra.Id).RequestNoJoinStr2__c + ':'+ raes.Fixture_Set__c + ':'+ 1;

            Rental_Apply_Equipment_Set__c raes1 = raesObj.clone(false);
            raes1.Rental_Apply__c = ra1.Id;
            raes1.Rental_End_Date__c = Date.today().AddDays(4);
            raes1.Rental_Start_Date__c = Date.today();
            raes1.IndexFromUniqueKey__c = 3;
            insert new List<Rental_Apply_Equipment_Set__c>{ raes, raes1 };

            Rental_Apply_Equipment_Set_Detail__c raesd1 = raesds[0].clone(false);
            raesd1.Rental_Apply__c = ra.Id;
            raesd1.Rental_Apply_Equipment_Set__c = raes.Id;
            raesd1.Asset__c = null;
            raesd1.Select_Time__c = null;
            raesd1.IndexFromUniqueKey__c = 1;
            // raesd1.Queue_Number__c = 1;
            // raesd1.Queue_Day__c = Date.today();
            Rental_Apply_Equipment_Set_Detail__c raesd2 = raesds[1].clone(false);
            raesd2.Rental_Apply__c = ra.Id;
            raesd2.Rental_Apply_Equipment_Set__c = raes.Id;
            raesd2.Asset__c = null;
            raesd2.Select_Time__c = null;
            raesd2.IndexFromUniqueKey__c = 2;

            Rental_Apply_Equipment_Set_Detail__c raesd11 = raesds[0].clone(false);
            raesd11.Rental_Apply__c = ra1.Id;
            raesd11.Rental_Apply_Equipment_Set__c = raes1.Id;
            raesd11.Asset__c = null;
            raesd11.Select_Time__c = null;
            raesd11.IndexFromUniqueKey__c = 1;
            // raesd1.Queue_Number__c = 2;
            // raesd1.Queue_Day__c = Date.today();
            Rental_Apply_Equipment_Set_Detail__c raesd12 = raesds[1].clone(false);
            raesd12.Rental_Apply__c = ra1.Id;
            raesd12.Asset__c = null;
            raesd12.Select_Time__c = null;
            raesd12.Rental_Apply_Equipment_Set__c = raes1.Id;
            raesd12.IndexFromUniqueKey__c = 2;
            Rental_Apply_Equipment_Set_Detail__c raesd13 = raesds[1].clone(false);
            raesd13.Rental_Apply__c = ra1.Id;
            raesd13.Asset__c = null;
            raesd13.Select_Time__c = null;
            raesd13.Rental_Apply_Equipment_Set__c = raes1.Id;
            raesd13.IndexFromUniqueKey__c = 2;
            insert new List<Rental_Apply_Equipment_Set_Detail__c>{ raesd1, raesd2, raesd11, raesd12 };

            MainFixtureSelectController.queue(raes.Id, ass[0].Id);
            MainFixtureSelectController.queue(raes1.Id, ass[0].Id);

            raes.First_RAESD__c = raesd1.Id;
            raes1.First_RAESD__c = raesd11.Id;
            update new List<Rental_Apply_Equipment_Set__c>{ raes, raes1 };

            List<Rental_Apply_Equipment_Set_Detail__c> raesds1 = [
                SELECT Id, Is_Body__c, Fixture_Model_No_F__c, Is_First_RAESD_F__c, Queue_Number__c
                FROM Rental_Apply_Equipment_Set_Detail__c
                WHERE Queue_Number__c > 0
                ORDER BY Is_Body__c DESC, Queue_Number__c
            ];
            System.assertEquals(raesds1.size(), 2);

            for (Integer i = 0; i < raesds1.size(); i++) {
                Rental_Apply_Equipment_Set_Detail__c raesd = raesds1[i];
                System.assertEquals(raesd.Queue_Number__c, i + 1);
                if (i == 0) {
                    System.assertEquals(raesd.Id, raesd1.Id);
                } else {
                    System.assertEquals(raesd.Id, raesd11.Id);
                }
            }
        }
        return us;
    }

    private static List<User> getUser() {
        List<User> us = new List<User>();
        // MIXED_DML_OPERATION, DML operation on setup object is not permitted Error
        System.runAs(new User(Id = Userinfo.getUserId())) {
            String timenow = Datetime.now().format('yyyyMMddHHmmss');
            User user1 = new User(
                Test_staff__c = true,
                LastName = 'TestMao',
                FirstName = 'TestMaoF',
                Alias = 'hp',
                CommunityNickname = 'TestMao',
                Email = 'Test@sunbridge.com',
                Username = 'Test' + timenow + '@sunbridge.com',
                IsActive = true,
                EmailEncodingKey = 'ISO-2022-JP',
                TimeZoneSidKey = 'Asia/Tokyo',
                LocaleSidKey = 'ja_JP',
                LanguageLocaleKey = 'ja',
                ProfileId = System.Label.ProfileId_SystemAdmin,
                Dept__c = '医疗华北营业本部',
                Province__c = '北京'
            );

            List<Profile> p = [SELECT Id FROM Profile WHERE Name = '2S1_销售医院担当'];
            System.assertEquals(p.size(), 1);
            User user2 = new User(
                Test_staff__c = true,
                LastName = 'TestMao1',
                FirstName = 'TestMaoF1',
                Alias = 'hp',
                CommunityNickname = 'TestMao1',
                Email = 'Test1@sunbridge.com',
                Username = 'Test1' + timenow + '@sunbridge.com',
                IsActive = true,
                EmailEncodingKey = 'ISO-2022-JP',
                TimeZoneSidKey = 'Asia/Tokyo',
                LocaleSidKey = 'ja_JP',
                LanguageLocaleKey = 'ja',
                ProfileId = p[0].Id,
                Dept__c = '医疗华北营业本部',
                Province__c = '北京'
            );
            us.add(user1);
            us.add(user2);
            insert us;
        }
        return us;
    }

    static Rental_Apply__c raObj {
        get {
            List<Rental_Apply__c> raObjs = [SELECT Id FROM Rental_Apply__c];
            System.assertEquals(raObjs.size(), 1);
            Rental_Apply__c raObj = raObjs[0];

            return raObj;
        }
    }
    static String recid {
        get {
            return 'pt_recid=' + raObj.Id;
        }
    }

    @IsTest
    static void testMethoud1() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];

        //生成寄回申请单
        FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c();
        fdsObj.Name = '00001';
        fdsObj.DeliveryCompany__c = '利讯';
        fdsObj.Distributor_method__c = '陆运';
        fdsObj.DeliveryType__c = '回寄';
        fdsObj.Wh_Staff__c = Userinfo.getUserId();
        fdsObj.Shippment_loaner_time__c = System.now();
        insert fdsObj;

        //批准申请单
        List<Rental_Apply__c> raObjs = [
            SELECT Id, Status__c, RA_Status__c, RA_Status_Text__c, Name, Phone_number__c, Loaner_medical_Staff__c
            FROM Rental_Apply__c
        ];
        List<Rental_Apply__c> raObjs2 = new List<Rental_Apply__c>();
        for (Rental_Apply__c raObj : raObjs) {
            raObj.Status__c = '已批准';
            raObjs2.add(raObj);
        }
        update raObjs2;

        //上传选择时间
        List<Rental_Apply_Equipment_Set_Detail__c> l2 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it2 : l1) {
            it2.DataMigration_Flag__c = true;
            it2.Inspection_result__c = 'NG';
            it2.Return_DeliverySlip__c = fdsObj.id;
            it2.Select_Time__c = Datetime.now();
            it2.Inspection_result_after_NG__c = 'NG';
            it2.Rental_Apply__c = raObjs2[0].Id;
            it2.Check_lost_Item__c = '欠品';
            it2.Check_lost_Item_Final__c = '欠品';
            it2.CDS_complete__c = true;
            l2.add(it2);
        }
        Test.startTest();
        update l2;
        //进行删除
        Rental_Apply_Equipment_Set_Detail__c it1 = new Rental_Apply_Equipment_Set_Detail__c();
        it1 = l2[0];
        delete it1;
        Test.stopTest();
    }

    @IsTest
    static void testMethoud2() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];

        //生成寄回申请单
        FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c();
        fdsObj.Name = '00001';
        fdsObj.DeliveryCompany__c = '利讯';
        fdsObj.Distributor_method__c = '陆运';
        fdsObj.DeliveryType__c = '回寄';
        fdsObj.Wh_Staff__c = Userinfo.getUserId();
        fdsObj.Shippment_loaner_time__c = System.now();
        //insert fdsObj;

        //批准申请单
        List<Rental_Apply__c> raObjs = [
            SELECT Id, Status__c, RA_Status__c, RA_Status_Text__c, Name, Phone_number__c, Loaner_medical_Staff__c
            FROM Rental_Apply__c
        ];
        List<Rental_Apply__c> raObjs2 = new List<Rental_Apply__c>();
        for (Rental_Apply__c raObj : raObjs) {
            raObj.Status__c = '已批准';
            raObjs2.add(raObj);
        }
        update raObjs2;

        //上传选择时间
        List<Rental_Apply_Equipment_Set_Detail__c> l2 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it2 : l1) {
            it2.DataMigration_Flag__c = true;
            it2.Inspection_result__c = 'NG';
            it2.Return_DeliverySlip__c = fdsObj.id;
            it2.Select_Time__c = Datetime.now();
            it2.Cancel_Select__c = true;
            it2.Loaner_Giveup_Time__c = Datetime.now();
            l2.add(it2);
        }
        Test.startTest();
        update l2;
        //进行删除
        Rental_Apply_Equipment_Set_Detail__c it1 = new Rental_Apply_Equipment_Set_Detail__c();
        it1 = l2[0];
        delete it1;
        Test.stopTest();
    }

    @IsTest
    static void testMethoud3() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];

        //生成寄回申请单
        FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c();
        fdsObj.Name = '00001';
        fdsObj.DeliveryCompany__c = '利讯';
        fdsObj.Distributor_method__c = '陆运';
        fdsObj.DeliveryType__c = '回寄';
        fdsObj.Wh_Staff__c = Userinfo.getUserId();
        fdsObj.Shippment_loaner_time__c = System.now();
        //insert fdsObj;

        //批准申请单
        List<Rental_Apply__c> raObjs = [
            SELECT Id, Status__c, RA_Status__c, RA_Status_Text__c, Name, Phone_number__c, Loaner_medical_Staff__c
            FROM Rental_Apply__c
        ];
        List<Rental_Apply__c> raObjs2 = new List<Rental_Apply__c>();
        for (Rental_Apply__c raObj : raObjs) {
            raObj.Status__c = '已批准';
            raObjs2.add(raObj);
        }
        update raObjs2;

        //上传选择时间
        // List<Rental_Apply_Equipment_Set_Detail__c> l2=new List<Rental_Apply_Equipment_Set_Detail__c>();
        // for(Rental_Apply_Equipment_Set_Detail__c it2:l1){
        //    l1[0].DeliverySlip__c = 'testDeliverySlip';
        //    l1[0].Return_DeliverySlip__c = 'testReturnDeliverySlip';
        // }
        // Test.startTest();
        // update l2;
    }

    @IsTest
    static void testMethoud4() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];

        //生成寄回申请单
        FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c();
        fdsObj.Name = '00001';
        fdsObj.DeliveryCompany__c = '利讯';
        fdsObj.Distributor_method__c = '陆运';
        fdsObj.DeliveryType__c = '回寄';
        fdsObj.Wh_Staff__c = Userinfo.getUserId();
        fdsObj.Shippment_loaner_time__c = System.now();
        //insert fdsObj;

        //批准申请单
        List<Rental_Apply__c> raObjs = [
            SELECT Id, Status__c, RA_Status__c, RA_Status_Text__c, Name, Phone_number__c, Loaner_medical_Staff__c
            FROM Rental_Apply__c
        ];
        List<Rental_Apply__c> raObjs2 = new List<Rental_Apply__c>();
        for (Rental_Apply__c raObj : raObjs) {
            raObj.Status__c = '已批准';
            raObjs2.add(raObj);
        }
        update raObjs2;

        List<Rental_Apply_Equipment_Set_Detail__c> l2 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it2 : l1) {
            it2.DataMigration_Flag__c = true;
            it2.Inspection_result__c = 'NG';
            it2.Return_DeliverySlip__c = fdsObj.id;
            it2.Select_Time__c = Datetime.now();
            it2.Cancel_Select__c = true;
            it2.Loaner_Giveup_Time__c = Datetime.now();
            it2.Check_lost_Item__c = '欠品';
            it2.Lost_item_giveup__c = true;
            l2.add(it2);
        }
        List<Rental_Apply_Equipment_Set_Detail__c> l3 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it3 : l2) {
            it3.DataMigration_Flag__c = true;
            it3.Inspection_result__c = 'NG';
            it3.Return_DeliverySlip__c = fdsObj.id;
            it3.Select_Time__c = Datetime.now();
            it3.Cancel_Select__c = true;
            it3.Loaner_Giveup_Time__c = Datetime.now();
            it3.Check_lost_Item__c = '欠品';
            it3.Lost_item_giveup__c = false;
            l3.add(it3);
        }
        List<Rental_Apply_Equipment_Set_Detail__c> l4 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it4 : l3) {
            it4.DataMigration_Flag__c = true;
            it4.Inspection_result__c = 'NG';
            it4.Return_DeliverySlip__c = fdsObj.id;
            it4.Select_Time__c = Datetime.now();
            it4.Cancel_Select__c = true;
            it4.Loaner_Giveup_Time__c = Datetime.now();
            it4.Check_lost_Item__c = '消耗';
            it4.Lost_item_giveup__c = true;
            l4.add(it4);
        }
        List<Rental_Apply_Equipment_Set_Detail__c> l5 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it5 : l4) {
            it5.DataMigration_Flag__c = true;
            it5.Inspection_result__c = 'NG';
            it5.Return_DeliverySlip__c = fdsObj.id;
            it5.Select_Time__c = Datetime.now();
            it5.Cancel_Select__c = true;
            it5.Loaner_Giveup_Time__c = Datetime.now();
            it5.Check_lost_Item__c = '消耗';
            it5.Lost_item_giveup__c = false;
            l5.add(it5);
        }
        List<Rental_Apply_Equipment_Set_Detail__c> l6 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it6 : l5) {
            it6.DataMigration_Flag__c = true;
            it6.Inspection_result__c = 'NG';
            it6.Return_DeliverySlip__c = fdsObj.id;
            it6.Select_Time__c = Datetime.now();
            it6.Cancel_Select__c = true;
            it6.Loaner_Giveup_Time__c = Datetime.now();
            it6.Check_lost_Item__c = 'OK';
            it6.Lost_item_giveup__c = true;
            l6.add(it6);
        }

        List<Rental_Apply_Equipment_Set_Detail__c> l7 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it7 : l6) {
            it7.DataMigration_Flag__c = true;
            it7.Inspection_result__c = 'NG';
            it7.Return_DeliverySlip__c = fdsObj.id;
            it7.Select_Time__c = Datetime.now();
            it7.Cancel_Select__c = true;
            it7.Loaner_Giveup_Time__c = Datetime.now();
            it7.Check_lost_Item__c = 'OK';
            it7.Lost_item_giveup__c = false;
            l7.add(it7);
        }
        List<Rental_Apply_Equipment_Set_Detail__c> l8 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it8 : l1) {
            it8.DataMigration_Flag__c = true;
            it8.Inspection_result__c = 'NG';
            it8.Return_DeliverySlip__c = fdsObj.id;
            it8.Select_Time__c = Datetime.now();
            it8.Cancel_Select__c = true;
            it8.Loaner_Giveup_Time__c = Datetime.now();
            it8.Check_lost_Item__c = '';
            it8.Lost_item_giveup__c = true;
            l8.add(it8);
        }
        List<Rental_Apply_Equipment_Set_Detail__c> l9 = new List<Rental_Apply_Equipment_Set_Detail__c>();
        for (Rental_Apply_Equipment_Set_Detail__c it9 : l1) {
            it9.DataMigration_Flag__c = true;
            it9.Inspection_result__c = 'NG';
            it9.Return_DeliverySlip__c = fdsObj.id;
            it9.Select_Time__c = Datetime.now();
            it9.Cancel_Select__c = true;
            it9.Loaner_Giveup_Time__c = Datetime.now();
            it9.Check_lost_Item__c = '';
            it9.Lost_item_giveup__c = false;
            l9.add(it9);
        }
        Test.startTest();
        update l3;
        update l2;
        update l4;
        update l2;
        update l5;
        update l2;
        update l6;
        update l2;
        update l7;
        update l2;
        update l8;
        update l2;
        update l9;

        // update l10;
        // update l11;
        //进行删除
        delete l7;
        Test.stopTest();
    }

    @IsTest
    static void testChangeAsset1() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r1 = l1[0];
        r1.Check_lost_Item__c = null;
        r1.Check_lost_Item_Final__c = null;
        r1.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        r1.Inspection_result__c = 'OK';
        update r1;
        r1.Check_lost_Item__c = '欠品';
        r1.Check_lost_Item_Final__c = '欠品';
        r1.Lost_item_giveup__c = true;
        r1.Inspection_result__c = 'NG';
        r1.Inspection_result_NG__c = '维修';
        r1.DataMigration_Flag__c  = true;
        update r1;
    }

    @IsTest
    static void testChangeAsset2() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r2 = l1[0];
        r2.Check_lost_Item__c = null;
        r2.Check_lost_Item_Final__c = null;
        r2.Inspection_result__c = 'OK';
        update r2;
        r2.Check_lost_Item__c = '消耗';
        r2.Check_lost_Item_Final__c = '消耗';
        update r2;
        r2.Check_lost_Item__c = null;
        r2.Check_lost_Item_Final__c = null;
        r2.Inspection_result__c = 'NG';
        r2.Inspection_result_NG__c = '废弃';
        r2.DataMigration_Flag__c  = true;
        update r2;
    }

    @IsTest
    static void testChangeAsset3() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r3 = l1[0];
        r3.Check_lost_Item__c = 'OK';
        r3.Check_lost_Item_Final__c = 'OK';
        r3.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        r3.Cancel_Select__c = false;
        update r3;
        r3.Check_lost_Item__c = '欠品';
        r3.Check_lost_Item_Final__c = '欠品';
        r3.Lost_item_giveup__c = true;
        r3.Cancel_Select__c = true;
        r3.Cancel_Reason__c = '主动取消';
        r3.StockDown__c = true;
        r3.DataMigration_Flag__c  = true;
        update r3;
    }

    @IsTest
    static void testChangeAsset4() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r4 = l1[0];
        r4.Check_lost_Item__c = 'OK';
        r4.Check_lost_Item_Final__c = 'OK';
        r4.Cancel_Select__c = false;
        r4.StockDown__c = true;
        update r4;
        r4.Check_lost_Item__c = '消耗';
        r4.Check_lost_Item_Final__c = '消耗';
        r4.Cancel_Select__c = true;
        r4.StockDown__c = true;
        r4.Cancel_Reason__c = '重新分配';
        update r4;
    }

    @IsTest
    static void testChangeAsset5() {
        OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(3));
        OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(4));
        OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(5));
        OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(6));
        OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(7));
        OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(10));
        OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(11));
        OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(12));
        insert new List<OlympusCalendar__c>{oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8};
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = false;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        r5.Inspection_result_after__c = null;
        r5.Inspection_result_after_Final__c = null;
        r5.DataMigration_Flag__c  = true;
        update r5;
        r5.Check_lost_Item__c = null;
        r5.Check_lost_Item_Final__c = null;
        r5.After_Inspection_time_Final__c =  Date.newInstance(2023,8, 29);
        r5.Inspection_result_after_Final__c = 'OK';
        r5.NextShippmentDate__c = Date.newInstance(2023, 9, 9);
        update r5;
    }

    @IsTest
    static void testChangeAsset6() {
        OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(3));
        OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(4));
        OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(5));
        OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(6));
        OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(7));
        OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(10));
        OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(11));
        OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(12));
        OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(13));
        OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(14));
        OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(17));
        OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.newInstance(2023, 8, 25).addDays(18));
        insert new List<OlympusCalendar__c>{oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12};
        FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c();
        fdsObj.Name = '00002';
        fdsObj.DeliveryCompany__c = '利讯';
        fdsObj.Distributor_method__c = '陆运';
        fdsObj.DeliveryType__c = '发货';
        fdsObj.Wh_Staff__c = Userinfo.getUserId();
        fdsObj.Shippment_loaner_time__c = System.now();
        insert fdsObj;
        // List<FixtureDeliverySlip__c> fdsObjs = [SELECT Id FROM FixtureDeliverySlip__c];
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = false;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        r5.DeliverySlip__c = null;
        update r5;
        r5.Check_lost_Item__c = 'OK';
        r5.Check_lost_Item_Final__c = 'OK';
        r5.Shipment_request_time2__c = Datetime.newInstance(2023, 8, 25, 1, 1, 1);
        r5.DeliverySlip__c = fdsObj.Id;
        update r5;
    }

    @IsTest
    static void testChangeAsset7() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = false;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset8() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = false;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = '消耗';
        r5.Check_lost_Item_Final__c = '消耗';
        update r5;
    }

    @IsTest
    static void testChangeAsset9() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];

        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;

        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = true;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = null;
        r5.Check_lost_Item_Final__c = null;
        r5.DataMigration_Flag__c  = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset10() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = true;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = 'OK';
        r5.Check_lost_Item_Final__c = 'OK';
        r5.DataMigration_Flag__c  = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset11() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = true;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = false;
        r5.DataMigration_Flag__c  = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset12() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '消耗';
        r5.Check_lost_Item_Final__c = '消耗';
        r5.Lost_item_giveup__c = false;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = null;
        r5.Check_lost_Item_Final__c = null;
        r5.DataMigration_Flag__c  = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset13() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '消耗';
        r5.Check_lost_Item_Final__c = '消耗';
        r5.Lost_item_giveup__c = false;
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = 'OK';
        r5.Check_lost_Item_Final__c = 'OK';
        r5.DataMigration_Flag__c  = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset14() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Check_lost_Item__c = '消耗';
        r5.Check_lost_Item_Final__c = '消耗';
        r5.Confirm_Lost_Date__c = Datetime.newInstance(2023, 1, 1, 1, 1, 1);
        update r5;
        r5.Check_lost_Item__c = '欠品';
        r5.Check_lost_Item_Final__c = '欠品';
        r5.Lost_item_giveup__c = false;
        r5.DataMigration_Flag__c  = true;
        update r5;
    }

    @IsTest
    static void testChangeAsset15() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Asset as1 = [SELECT Id FROM Asset WHERE Id = :l1[0].Asset__c];
        as1.Last_Reserve_RAES_Detail__c = l1[0].Id;
        as1.Out_of_wh__c  = -10;
        as1.Rental_Count__c = -10;
        update as1;
        Rental_Apply_Equipment_Set__c raesObj = [SELECT Id FROM Rental_Apply_Equipment_Set__c WHERE Id =:l1[0].Rental_Apply_Equipment_Set__c];
        raesObj.Received_Confirm__c = 'NG';
        raesObj.Received_ng_detail__c  = 'Test';
        update raesObj;
        FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c();
        fdsObj.Name = '00002';
        fdsObj.DeliveryCompany__c = '利讯';
        fdsObj.Distributor_method__c = '陆运';
        fdsObj.DeliveryType__c = '发货';
        fdsObj.Wh_Staff__c = Userinfo.getUserId();
        fdsObj.Shippment_loaner_time__c = System.now();
        insert fdsObj;
        FixtureDeliverySlip__c fdsObj1 = new FixtureDeliverySlip__c();
        fdsObj1.Name = '00003';
        fdsObj1.DeliveryCompany__c = '利讯';
        fdsObj1.Distributor_method__c = '陆运';
        fdsObj1.DeliveryType__c = '回寄';
        fdsObj1.Wh_Staff__c = Userinfo.getUserId();
        fdsObj1.Shippment_loaner_time__c = System.now();
        insert fdsObj1;
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Return_DeliverySlip__c = null;
        update r5;
        r5.Inspection_result__c = 'OK';
        r5.Shipment_request_time2__c = Datetime.newInstance(2023, 8, 25, 1, 1, 1);
        r5.DeliverySlip__c = fdsObj.Id;
        r5.Return_DeliverySlip__c = fdsObj1.Id;
        r5.Asset_return_time__c = Datetime.newInstance(2023, 8, 26, 1, 1, 1);
        update r5;
    }

    @IsTest
    static void testChangeAsset16() {
        List<Rental_Apply_Equipment_Set_Detail__c> l1 = [
            SELECT
                Id,
                Fixture_Model_No_text__c,
                Asset__c,
                Rental_Apply__r.Name,
                Rental_Apply_Equipment_Set__r.Name,
                Queue_Day__c,
                Queue_Number__c,
                Rental_Apply__r.WorkPlace__c,
                Rental_Apply__r.Person_In_Charge__r.Name,
                Rental_Apply__r.demo_purpose2__c,
                Queue_Conment__c,
                Equipment_Type_text__c,
                Salesdepartment_before__c,
                Internal_asset_location_before__c,
                jumpReason__c,
                Queue_User__r.Name,
                Rental_Apply__r.Hospital__r.Name,
                Rental_Apply__c,
                Rental_Apply__r.Campaign__r.Name,
                Externalkey__c,
                Rental_Apply__r.Internal_asset_location_F__c
            FROM Rental_Apply_Equipment_Set_Detail__c
            WHERE Is_Body__c = TRUE
        ];
        Rental_Apply_Equipment_Set_Detail__c r5 = l1[0];
        r5.Allow_Adjust_Queue_Flag__c = false;
        update r5;
        r5.Allow_Adjust_Queue_Flag__c = true;
        update r5;
    }
}