@isTest
private class NFM301RestTest {
    static testMethod void resend_test() {

    	List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }

        Account company = new Account();
        company.RecordTypeId = rectCo[0].Id;
        company.AgentCode_Ext__c = '9999999';
        company.Name         = 'NFM301TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name         = '*';
        section.AgentCode_Ext__c = '9999964';
        section.Department_Class_Label__c = '消化科';
        section.ParentId                  = company.Id;
        section.Hospital_Department_Class__c = company.Id;
        upsert section;
        Account depart = new Account();
        depart.RecordTypeId = rectDpt[0].Id;
        depart.Name         = '*';
        depart.AgentCode_Ext__c = '7271439';
        depart.Department_Name__c  = 'NFM301TestDepart';
        depart.ParentId            = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c         = company.Id;
        upsert depart;
        // 再取得
        List<Id> accountIds = new Id[] {company.Id, section.Id, depart.Id};
        // List<Account> accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c];
        List<Account> accList = [select Management_Code__c,  Name, Id from Account where Id In :accountIds];

        Product2 prd = new Product2();
        prd.ProductCode_Ext__c     = 'NFM301Prd1';
        prd.ProductCode            = 'K10021616';
        prd.Name                   = 'NFM301Prd1';
        prd.Manual_Entry__c        = false;
        insert prd;

        Asset ast = new Asset();
        ast.Name = 'NFM301Ast1';
        ast.Product2Id = prd.Id;
        ast.SerialNumber = '21858736';
        ast.Product_Serial_No__c = 'K10021616:21858736';
        ast.Hospital__c = accList[0].Id;
        ast.Department_Class__c = accList[1].Id;
        ast.AccountId = accList[2].Id;
        insert ast;

        TracingCode__c tracCode = new TracingCode__c();
        tracCode.trscingcode__c = 1;
        tracCode.name__c = '第三方收货';
        tracCode.Name = 'TracingCode';
        insert tracCode;

        User loginUser = [Select Id, Alias, Province__c from User where Id =: UserInfo.getUserId()];
        loginUser.Batch_User__c = true;
        update loginUser;


    	NFM301Rest.GeneralData GeneralData = new NFM301Rest.GeneralData();
        NFM301Rest.ProductsDelivery ProductsDelivery = new NFM301Rest.ProductsDelivery();
        ProductsDelivery.Monitoring = new NFMUtil.Monitoring();
        ProductsDelivery.GeneralData  = new NFM301Rest.GeneralData[]{ 
        	GeneralData };
        NFM301Rest.DnInformation DnInformation = new NFM301Rest.DnInformation();
        GeneralData.DnInformation = new NFM301Rest.DnInformation[]{ 
        	DnInformation };
        GeneralData.SendTo = '番禺C-TEC';
		GeneralData.SalesOrderNumber = '1000067367';
		GeneralData.Purpose = '培训中心-C-TEC';
		GeneralData.ProcessType = '1';
		GeneralData.OtherGeneral3 = '';
		GeneralData.OtherGeneral2 = '';
		GeneralData.OtherGeneral1 = '';
		GeneralData.OrderNumber = 'GZDE-SP-18016';
		GeneralData.DeliveryDate = '20181018';
		GeneralData.ContactPerson = '张洋';
		GeneralData.CompanyCode = '5113';
		GeneralData.Comment = '培训需求，4K备品采购';
		GeneralData.Category = '固定资产';
		GeneralData.ApprovalNumber = 'ME151P07-0267';

		DnInformation.ValidTo = '';
		DnInformation.TracingCode = 'EXSEN';
		DnInformation.SorLMark = 'S';
		DnInformation.SerialNumber = '21858736';
		DnInformation.ProductCode = 'K10021616';
		DnInformation.NMPA_ValidTo = '20201101';
		DnInformation.NMPA_ValidFrom = '20151102';
		DnInformation.NMPA_ValidDate = '不适用';
		DnInformation.LocationName = '广州番禺';
		DnInformation.LocationCD = '3013';
		DnInformation.InchargeProvinceCD = '190';
		DnInformation.InchargeProvince = '广州';
		DnInformation.CostCenterMemo = 'CTEC教育本部-培训中心备品 GZ';
		DnInformation.CostCenterCD = '5133010501';
		DnInformation.Barcode = '011501977800377111180800105401372121858736250EXSEN';
		DnInformation.AssetNumber = '18207244';
		DnInformation.AssetDay = '20181019';

		BatchIF_Log__c rowData = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
		if (String.isBlank(rowData.Log__c) == false) {
            NFM301Rest.executefuture(rowData.Id);
        }

		GeneralData.ProcessType = '2';
		
		BatchIF_Log__c rowData1 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
		if (String.isBlank(rowData1.Log__c) == false) {
            NFM301Rest.executefuture(rowData1.Id);
        }

        GeneralData.ProcessType = '0';
        
        BatchIF_Log__c rowData2 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData2.Log__c) == false) {
            NFM301Rest.executefuture(rowData2.Id);
        }

        GeneralData.ProcessType = '1';
        GeneralData.CompanyCode = '';
        BatchIF_Log__c rowData3 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData3.Log__c) == false) {
            NFM301Rest.executefuture(rowData3.Id);
        }

        GeneralData.CompanyCode = '5113';
        GeneralData.SalesOrderNumber = '';
        BatchIF_Log__c rowData4 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData4.Log__c) == false) {
            NFM301Rest.executefuture(rowData4.Id);
        }

        GeneralData.SalesOrderNumber = '1000067367';
        GeneralData.DeliveryDate = '';
        BatchIF_Log__c rowData5 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData5.Log__c) == false) {
            NFM301Rest.executefuture(rowData5.Id);
        }

        GeneralData.DeliveryDate = '20181018';
        DnInformation.SerialNumber = '';
        BatchIF_Log__c rowData6 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData6.Log__c) == false) {
            NFM301Rest.executefuture(rowData6.Id);
        }

        DnInformation.SerialNumber = '21858736';
        DnInformation.ProductCode = '';
        BatchIF_Log__c rowData7 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData7.Log__c) == false) {
            NFM301Rest.executefuture(rowData7.Id);
        }
    }
    static testMethod void resend_test2() {

        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }

        Account company = new Account();
        company.RecordTypeId = rectCo[0].Id;
        company.AgentCode_Ext__c = '9999999';
        company.Name         = 'NFM301TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name         = '*';
        section.AgentCode_Ext__c = '9999964';
        section.Department_Class_Label__c = '消化科';
        section.ParentId                  = company.Id;
        section.Hospital_Department_Class__c = company.Id;
        upsert section;
        Account depart = new Account();
        depart.RecordTypeId = rectDpt[0].Id;
        depart.Name         = '*';
        depart.AgentCode_Ext__c = '7271439';
        depart.Department_Name__c  = 'NFM301TestDepart';
        depart.ParentId            = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c         = company.Id;
        upsert depart;
        // 再取得
        List<Id> accountIds = new Id[] {company.Id, section.Id, depart.Id};
        // List<Account> accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c];
        List<Account> accList = [select Management_Code__c, Name, Id from Account where Id In :accountIds];

        Product2 prd = new Product2();
        prd.ProductCode_Ext__c     = 'NFM301Prd1';
        prd.ProductCode            = 'K10021616';
        prd.Name                   = 'NFM301Prd1';
        prd.Manual_Entry__c        = false;
        insert prd;

        Asset ast = new Asset();
        ast.Name = 'NFM301Ast1';
        ast.Product2Id = prd.Id;
        ast.SerialNumber = '21858736';
        ast.Product_Serial_No__c = 'K10021616:21858736';
        ast.Hospital__c = accList[0].Id;
        ast.Department_Class__c = accList[1].Id;
        ast.AccountId = accList[2].Id;
        insert ast;

        TracingCode__c tracCode = new TracingCode__c();
        tracCode.trscingcode__c = 1;
        tracCode.name__c = '第三方收货';
        tracCode.Name = 'TracingCode';
        insert tracCode;

        User loginUser = [Select Id, Alias, Province__c from User where Id =: UserInfo.getUserId()];
        loginUser.Batch_User__c = true;
        update loginUser;


        NFM301Rest.GeneralData GeneralData = new NFM301Rest.GeneralData();
        NFM301Rest.ProductsDelivery ProductsDelivery = new NFM301Rest.ProductsDelivery();
        ProductsDelivery.Monitoring = new NFMUtil.Monitoring();
        ProductsDelivery.GeneralData  = new NFM301Rest.GeneralData[]{ 
            GeneralData };
        NFM301Rest.DnInformation DnInformation = new NFM301Rest.DnInformation();
        GeneralData.DnInformation = new NFM301Rest.DnInformation[]{ 
            DnInformation };
        GeneralData.SendTo = '番禺C-TEC';
        GeneralData.SalesOrderNumber = '1000067367';
        GeneralData.Purpose = '培训中心-C-TEC';
        GeneralData.ProcessType = '1';
        GeneralData.OtherGeneral3 = '';
        GeneralData.OtherGeneral2 = '';
        GeneralData.OtherGeneral1 = '';
        GeneralData.OrderNumber = 'GZDE-SP-18016';
        GeneralData.DeliveryDate = '20181018';
        GeneralData.ContactPerson = '张洋';
        GeneralData.CompanyCode = '5113';
        GeneralData.Comment = '培训需求，4K备品采购';
        GeneralData.Category = '固定资产';
        GeneralData.ApprovalNumber = 'ME151P07-0267';

        DnInformation.ValidTo = '';
        DnInformation.TracingCode = 'EXSEN';
        DnInformation.SorLMark = 'X';
        DnInformation.SerialNumber = '21858736';
        DnInformation.ProductCode = 'K10021616';
        DnInformation.NMPA_ValidTo = '20201101';
        DnInformation.NMPA_ValidFrom = '20151102';
        DnInformation.NMPA_ValidDate = '不适用';
        DnInformation.LocationName = '广州番禺';
        DnInformation.LocationCD = '3017';
        DnInformation.InchargeProvinceCD = '190';
        DnInformation.InchargeProvince = '广州';
        DnInformation.CostCenterMemo = 'CTEC教育本部-培训中心备品 GZ';
        DnInformation.CostCenterCD = '5133010501';
        DnInformation.Barcode = '011501977800377111180800105401372121858736250EXSEN';

        BatchIF_Log__c rowData = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData.Log__c) == false) {
            NFM301Rest.executefuture(rowData.Id);
        }

        GeneralData.ProcessType = '2';
        
        BatchIF_Log__c rowData1 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData1.Log__c) == false) {
            NFM301Rest.executefuture(rowData1.Id);
        }

        GeneralData.ProcessType = '0';
        
        BatchIF_Log__c rowData2 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData2.Log__c) == false) {
            NFM301Rest.executefuture(rowData2.Id);
        }

        GeneralData.ProcessType = '1';
        GeneralData.CompanyCode = '';
        BatchIF_Log__c rowData3 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData3.Log__c) == false) {
            NFM301Rest.executefuture(rowData3.Id);
        }

        GeneralData.CompanyCode = '5113';
        GeneralData.SalesOrderNumber = '';
        BatchIF_Log__c rowData4 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData4.Log__c) == false) {
            NFM301Rest.executefuture(rowData4.Id);
        }

        GeneralData.SalesOrderNumber = '1000067367';
        GeneralData.DeliveryDate = '';
        BatchIF_Log__c rowData5 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData5.Log__c) == false) {
            NFM301Rest.executefuture(rowData5.Id);
        }

        GeneralData.DeliveryDate = '20181018';
        DnInformation.SerialNumber = '';
        BatchIF_Log__c rowData6 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData6.Log__c) == false) {
            NFM301Rest.executefuture(rowData6.Id);
        }

        DnInformation.SerialNumber = '21858736';
        DnInformation.ProductCode = 'K10021616';
        BatchIF_Log__c rowData7 = NFMUtil.saveRowData(ProductsDelivery.Monitoring, 'NFM301', ProductsDelivery.GeneralData);
        if (String.isBlank(rowData7.Log__c) == false) {
            NFM301Rest.executefuture(rowData7.Id);
        }
    }
    @isTest static void test_method_execute1() {

        Test.startTest();
        
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }

        Account company = new Account();
        company.RecordTypeId = rectCo[0].Id;
        company.AgentCode_Ext__c = '9999999';
        company.Name         = 'NFM301TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name         = '*';
        section.AgentCode_Ext__c = '9999964';
        section.Department_Class_Label__c = '消化科';
        section.ParentId                  = company.Id;
        section.Hospital_Department_Class__c = company.Id;
        upsert section;
        Account depart = new Account();
        depart.RecordTypeId = rectDpt[0].Id;
        depart.Name         = '*';
        depart.AgentCode_Ext__c = '7271439';
        depart.Department_Name__c  = 'NFM301TestDepart';
        depart.ParentId            = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c         = company.Id;
        upsert depart;

        TracingCode__c tracCode = new TracingCode__c();
        tracCode.trscingcode__c = 1;
        tracCode.SerialNumber__c = 1;
        tracCode.name__c = '第三方收货';
        tracCode.Name='asd';
        insert tracCode;

        RestRequest req = new RestRequest();
        RestResponse res = new RestResponse();

        // String JsonMsg = '{	"ProductsDelivery": {		"Monitoring": {},		"GeneralData": []	}}';
        String JsonMsg = '{"ProductsDelivery": {       "Monitoring": {},  "GeneralData": [{"SendTo": "OCM成都分公司","SalesOrderNumber": "1000067424","Purpose": "RC", "ProcessType": "1","OtherGeneral3": "","OtherGeneral2": "","OtherGeneral1": "","OrderNumber": "GZDE-SP-18018-1","DnInformation": [{"ValidTo": "","TracingCode": "EXSET","SorLMark": "S","SerialNumber": "21858514","ProductCode": "K10021616","NMPA_ValidTo": "20201101","NMPA_ValidFrom": "20151102","NMPA_ValidDate": "不适用","LocationName": "成都","NMPA_NO": "新增","Provider": "新增Provider","LocationCD": "3010","InchargeProvinceCD": "190", "InchargeProvince": "广州","CostCenterMemo": "南方技术服务部","CostCenterCD": "5133990803","Barcode": "011501977800377111180700105378842121858514250EXSET","AssetNumber": "19200484","AssetDay": "20181019"}],"DeliveryDate": "20181018","ContactPerson": "章锐","CompanyCode": "5113","Comment": "服务部4K备品导入","Category": "固定资产","ApprovalNumber": "ME151P07-0113"}]}}';
        req.requestURI = 'services/apexrest/NFM301/execute';
        req.httpMethod = 'POST';
        req.requestBody = Blob.valueof(JsonMsg);
        RestContext.request = req;
        RestContext.response= res;

        NFM301Rest.execute();

        // JsonMsg = '{"ProductsDelivery": {       "Monitoring": {},  "GeneralData": [{"SendTo": "OCM成都分公司","SalesOrderNumber": "1000067424","Purpose": "RC", "ProcessType": "1","OtherGeneral3": "","OtherGeneral2": "","OtherGeneral1": "","OrderNumber": "GZDE-SP-18018-1","DnInformation": [{"ValidTo": "","TracingCode": "EXSET","SorLMark": "S","SerialNumber": "","ProductCode": "K10021616","NMPA_ValidTo": "","NMPA_ValidFrom": "","NMPA_ValidDate": "","LocationName": "成都","NMPA_NO": "新增","Provider": "新增Provider","LocationCD": "3010","InchargeProvinceCD": "190", "InchargeProvince": "广州","CostCenterMemo": "南方技术服务部","CostCenterCD": "5133990803","Barcode": "011501977800377111180700105378842121858514250EXSET","AssetNumber": "19200484","AssetDay": "20181019"}],"DeliveryDate": "20181018","ContactPerson": "章锐","CompanyCode": "5113","Comment": "服务部4K备品导入","Category": "固定资产","ApprovalNumber": "ME151P07-0113"}]}}';
        // req.requestBody = Blob.valueof(JsonMsg);
        // NFM301Rest.execute();

        Test.stopTest();
    }

    @isTest static void test_method_execute2() {

        Test.startTest();
        
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }

        Account company = new Account();
        company.RecordTypeId = rectCo[0].Id;
        company.AgentCode_Ext__c = '9999999';
        company.Name         = 'NFM301TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name         = '*';
        section.AgentCode_Ext__c = '9999964';
        section.Department_Class_Label__c = '消化科';
        section.ParentId                  = company.Id;
        section.Hospital_Department_Class__c = company.Id;
        upsert section;
        Account depart = new Account();
        depart.RecordTypeId = rectDpt[0].Id;
        depart.Name         = '*';
        depart.AgentCode_Ext__c = '7271439';
        depart.Department_Name__c  = 'NFM301TestDepart';
        depart.ParentId            = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c         = company.Id;
        upsert depart;

        TracingCode__c tracCode = new TracingCode__c();
        tracCode.trscingcode__c = 1;
        tracCode.SerialNumber__c = 1;
        tracCode.name__c = '第三方收货';
        tracCode.Name = 'TracingCode';
        insert tracCode;

        RestRequest req = new RestRequest();
        RestResponse res = new RestResponse();

        // String JsonMsg = '{  "ProductsDelivery": {       "Monitoring": {},       "GeneralData": []   }}';
        String  JsonMsg = '{"ProductsDelivery": {       "Monitoring": {},  "GeneralData": [{"SendTo": "OCM成都分公司","SalesOrderNumber": "1000067424","Purpose": "RC", "ProcessType": "1","OtherGeneral3": "","OtherGeneral2": "","OtherGeneral1": "","OrderNumber": "GZDE-SP-18018-1","DnInformation": [{"ValidTo": "","TracingCode": "EXSET","SorLMark": "S","SerialNumber": "","ProductCode": "K10021616","NMPA_ValidTo": "20201101","NMPA_ValidFrom": "20151102","NMPA_ValidDate": "不适用","LocationName": "成都","NMPA_NO": "新增","Provider": "新增Provider","LocationCD": "3010","InchargeProvinceCD": "190", "InchargeProvince": "广州","CostCenterMemo": "南方技术服务部","CostCenterCD": "5133990803","Barcode": "011501977800377111180700105378842121858514250EXSET","AssetNumber": "19200484","AssetDay": "20181019"}],"DeliveryDate": "20181018","ContactPerson": "章锐","CompanyCode": "5113","Comment": "服务部4K备品导入","Category": "固定资产","ApprovalNumber": "ME151P07-0113"}]}}';
        req.requestURI = 'services/apexrest/NFM301/execute';
        req.httpMethod = 'POST';
        req.requestBody = Blob.valueof(JsonMsg);
        RestContext.request = req;
        RestContext.response= res;

        NFM301Rest.execute();
        Test.stopTest();
    }

    @isTest static void test_method_execute3() {

        Test.startTest();
        
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }

        Account company = new Account();
        company.RecordTypeId = rectCo[0].Id;
        company.AgentCode_Ext__c = '9999999';
        company.Name         = 'NFM301TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name         = '*';
        section.AgentCode_Ext__c = '9999964';
        section.Department_Class_Label__c = '消化科';
        section.ParentId                  = company.Id;
        section.Hospital_Department_Class__c = company.Id;
        upsert section;
        Account depart = new Account();
        depart.RecordTypeId = rectDpt[0].Id;
        depart.Name         = '*';
        depart.AgentCode_Ext__c = '7271439';
        depart.Department_Name__c  = 'NFM301TestDepart';
        depart.ParentId            = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c         = company.Id;
        upsert depart;

        TracingCode__c tracCode = new TracingCode__c();
        tracCode.trscingcode__c = 1;
        tracCode.SerialNumber__c = 1;
        tracCode.name__c = '第三方收货';
        tracCode.Name = 'TracingCode';
        insert tracCode;

        RestRequest req = new RestRequest();
        RestResponse res = new RestResponse();

        // String JsonMsg = '{  "ProductsDelivery": {       "Monitoring": {},       "GeneralData": []   }}';
        String  JsonMsg = '{"ProductsDelivery": {       "Monitoring": {},  "GeneralData": [{"SendTo": "OCM成都分公司","SalesOrderNumber": "1000067424","Purpose": "RC", "ProcessType": "1","OtherGeneral3": "","OtherGeneral2": "","OtherGeneral1": "","OrderNumber": "GZDE-SP-18018-1","DnInformation": [{"ValidTo": "","TracingCode": "","SorLMark": "S","SerialNumber": "","ProductCode": "K10021616","NMPA_ValidTo": "20201101","NMPA_ValidFrom": "20151102","NMPA_ValidDate": "不适用","LocationName": "成都","NMPA_NO": "新增","Provider": "新增Provider","LocationCD": "3010","InchargeProvinceCD": "190", "InchargeProvince": "广州","CostCenterMemo": "南方技术服务部","CostCenterCD": "5133990803","Barcode": "011501977800377111180700105378842121858514250EXSET","AssetNumber": "19200484","AssetDay": "20181019"}],"DeliveryDate": "20181018","ContactPerson": "章锐","CompanyCode": "5113","Comment": "服务部4K备品导入","Category": "固定资产","ApprovalNumber": "ME151P07-0113"}]}}';
        req.requestURI = 'services/apexrest/NFM301/execute';
        req.httpMethod = 'POST';
        req.requestBody = Blob.valueof(JsonMsg);
        RestContext.request = req;
        RestContext.response= res;

        NFM301Rest.execute();
        Test.stopTest();
    }
    /*
    @isTest static void test_method_SendEmail() {
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }

        Account company = new Account();
        company.RecordTypeId = rectCo[0].Id;
        company.AgentCode_Ext__c = '9999999';
        company.Name         = 'NFM301TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name         = '*';
        section.AgentCode_Ext__c = '9999964';
        section.Department_Class_Label__c = '消化科';
        section.ParentId                  = company.Id;
        section.Hospital_Department_Class__c = company.Id;
        upsert section;
        Account depart = new Account();
        depart.RecordTypeId = rectDpt[0].Id;
        depart.Name         = '*';
        depart.AgentCode_Ext__c = '7271439';
        depart.Department_Name__c  = 'NFM301TestDepart';
        depart.ParentId            = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c         = company.Id;
        upsert depart;
        // 再取得
        List<Id> accountIds = new Id[] {company.Id, section.Id, depart.Id};
        List<Account> accList = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id In :accountIds order by Management_Code_Auto__c];

        Product2 prd = new Product2();
        prd.ProductCode_Ext__c     = 'NFM301Prd1';
        prd.ProductCode            = 'K10021616';
        prd.Name                   = 'NFM301Prd1';
        prd.Manual_Entry__c        = false;
        insert prd;

        Asset ast = new Asset();
        ast.Name = 'NFM301Ast1';
        ast.Product2Id = prd.Id;
        ast.SerialNumber = '21858736';
        ast.Product_Serial_No__c = 'K10021616:21858736';
        ast.Hospital__c = accList[0].Id;
        ast.Department_Class__c = accList[1].Id;
        ast.AccountId = accList[2].Id;
        insert ast;

        ReceivingNote__c rectivingNote = new ReceivingNote__c();
        rectivingNote.DateOfDelivery__c = Date.today();
        rectivingNote.Sales_order_number__c = '20191212';
        rectivingNote.Managment_Code__c = '20191212';
        insert rectivingNote;
        ReceivingNoteSummary__c rectivingNoteSum = new ReceivingNoteSummary__c();
        rectivingNoteSum.Product_Serial_No__c = '20191212';
        rectivingNoteSum.ReceivingNote__c = rectivingNote.Id;
        insert rectivingNoteSum;
        ReceivingNoteDetail__c rectivingNoteDet = new ReceivingNoteDetail__c();
        rectivingNoteDet.Product_Serial_No__c = '20191212';
        rectivingNoteDet.ReceivingNoteSummary__c = rectivingNoteSum.Id;
        insert rectivingNoteDet;

        List<String> rectivingNoteId = new List<String>();
        rectivingNoteId.add(rectivingNote.Id);
        List<String> rectivingNoteSumId = new List<String>();
        rectivingNoteSumId.add(rectivingNoteSum.Id);
        List<String> rectivingNoteDetId = new List<String>();
        rectivingNoteDetId.add(rectivingNoteDet.Id);
        List<String> assetYId = new List<String>();
        assetYId.add(ast.Id);
        List<String> assetNId = new List<String>();
        assetNId.add(ast.Id);
        NFM301SendEmail.sendEmailOnNFM301(rectivingNoteId, rectivingNoteSumId, rectivingNoteDetId, assetYId, assetNId);

    }*/
}