buli
2023-04-25 399b453ac2f611473885681688f6aa69029e65b8
backup
2个文件已添加
3个文件已修改
278 ■■■■ 已修改文件
force-app/main/default/classes/DNUpsertBatchTest.cls 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignForm.cls 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest/packageForSign.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/DNUpsertBatchTest.cls
@@ -16,28 +16,80 @@
        ID rectDpt2ID = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Department_GI').getRecordTypeId();
        // テストデータ
        company = new Account(RecordTypeId = rectCoID, Name = 'NFM110TestCompany', FSE_SP_Main_Leader__c = UserInfo.getUserId(), FSE_GI_Main_Leader__c = UserInfo.getUserId());
        company = new Account(
            RecordTypeId = rectCoID,
            Name = 'NFM110TestCompany',
            FSE_SP_Main_Leader__c = UserInfo.getUserId(),
            FSE_GI_Main_Leader__c = UserInfo.getUserId()
        );
        olympus = new Account(RecordTypeId = rectCoID, AgentCode_Ext__c = '9999999', Name = 'olympus');
        insert new Account[] {company, olympus};
            company = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :company.Id];
        section1 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId = :company.Id and RecordType.name = '戦略科室分類 呼吸科'];
        section2 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId = :company.Id and RecordType.name = '戦略科室分類 消化科'];
        olympus1 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId = :olympus.Id and RecordType.name = '戦略科室分類 呼吸科'];
        olympus2 = [select Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c from Account where ParentId = :olympus.Id and RecordType.name = '戦略科室分類 消化科'];
        insert new List<Account>{ company, olympus };
        company = [SELECT Management_Code__c, Management_Code_Auto__c, Name, Id FROM Account WHERE Id = :company.Id];
        section1 = [
            SELECT Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c
            FROM Account
            WHERE ParentId = :company.Id AND RecordType.name = '戦略科室分類 呼吸科'
        ];
        section2 = [
            SELECT Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c
            FROM Account
            WHERE ParentId = :company.Id AND RecordType.name = '戦略科室分類 消化科'
        ];
        olympus1 = [
            SELECT Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c
            FROM Account
            WHERE ParentId = :olympus.Id AND RecordType.name = '戦略科室分類 呼吸科'
        ];
        olympus2 = [
            SELECT Management_Code__c, Management_Code_Auto__c, Name, Id, Department_Class_Label__c
            FROM Account
            WHERE ParentId = :olympus.Id AND RecordType.name = '戦略科室分類 消化科'
        ];
        System.debug('section1.Department_Class_Label__c=' + section1.Department_Class_Label__c);
        System.debug('section2.Department_Class_Label__c=' + section2.Department_Class_Label__c);
        depart1 = new Account(RecordTypeId = rectDpt1ID, Name = '*', ParentId  = section1.Id, Department_Class__c = section1.Id, Hospital__c = company.Id,
                              Department_Name__c = 'NFM110TestDepart1');
        depart2 = new Account(RecordTypeId = rectDpt2ID, Name = '*', ParentId  = section2.Id, Department_Class__c = section2.Id, Hospital__c = company.Id,
                              Department_Name__c = 'NFM110TestDepart2');
        Account ocm = new Account(RecordTypeId = rectDpt2ID, Name = '*', ParentId  = section2.Id, Department_Class__c = section2.Id, Hospital__c = company.Id,
                                  AgentCode_Ext__c = '9999900', Department_Name__c = 'NFM110TestDepart3');
        Account olympus_return = new Account(RecordTypeId = rectDpt2ID, Name = '*', ParentId  = olympus2.Id, Department_Class__c = olympus2.Id, Hospital__c = olympus.Id,
                                             AgentCode_Ext__c = '9999901', Department_Name__c = 'olympus_return');
        insert new Account[] {depart1, depart2, ocm, olympus_return};
        depart1 = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :depart1.Id];
        depart2 = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :depart2.Id];
        Product2 prd = new Product2(Name = 'NFM110Prd1', ProductCode = 'NFM110Prd1', ProductCode_Ext__c = 'NFM110Prd1', Manual_Entry__c = false);
        depart1 = new Account(
            RecordTypeId = rectDpt1ID,
            Name = '*',
            ParentId = section1.Id,
            Department_Class__c = section1.Id,
            Hospital__c = company.Id,
            Department_Name__c = 'NFM110TestDepart1'
        );
        depart2 = new Account(
            RecordTypeId = rectDpt2ID,
            Name = '*',
            ParentId = section2.Id,
            Department_Class__c = section2.Id,
            Hospital__c = company.Id,
            Department_Name__c = 'NFM110TestDepart2'
        );
        Account ocm = new Account(
            RecordTypeId = rectDpt2ID,
            Name = '*',
            ParentId = section2.Id,
            Department_Class__c = section2.Id,
            Hospital__c = company.Id,
            AgentCode_Ext__c = '9999900',
            Department_Name__c = 'NFM110TestDepart3'
        );
        Account olympus_return = new Account(
            RecordTypeId = rectDpt2ID,
            Name = '*',
            ParentId = olympus2.Id,
            Department_Class__c = olympus2.Id,
            Hospital__c = olympus.Id,
            AgentCode_Ext__c = '9999901',
            Department_Name__c = 'olympus_return'
        );
        insert new List<Account>{ depart1, depart2, ocm, olympus_return };
        depart1 = [SELECT Management_Code__c, Management_Code_Auto__c, Name, Id FROM Account WHERE Id = :depart1.Id];
        depart2 = [SELECT Management_Code__c, Management_Code_Auto__c, Name, Id FROM Account WHERE Id = :depart2.Id];
        Product2 prd = new Product2(
            Name = 'NFM110Prd1',
            ProductCode = 'NFM110Prd1',
            ProductCode_Ext__c = 'NFM110Prd1',
            Manual_Entry__c = false
        );
        insert prd;
        Product2__c pro1 = new Product2__c(Name='NFM110Prd1',OT_CODE_Text__c='NFM110Prd1',Product2__c=prd.id);
        insert pro1;
@@ -50,10 +102,10 @@
        ProductsDelivery.Monitoring = new NFMUtil.Monitoring();
        ProductsDelivery.Monitoring.MessageGroupNumber = nowStr + '01';
        ProductsDelivery.GeneralData = new NFM110Rest.GeneralData[] { generalData1 };
        ProductsDelivery.GeneralData = new List<NFM110Rest.GeneralData>{ generalData1 };
        generalData1.DeliveryNote = 'DeliveryNote';
        NFM110Rest.DnInformation dnInfo1 = new NFM110Rest.DnInformation();
        generalData1.DnInformation = new NFM110Rest.DnInformation[] { dnInfo1 };
        generalData1.DnInformation = new List<NFM110Rest.DnInformation>{ dnInfo1 };
        generalData1.EndUserNo     = company.Management_Code_Auto__c;
        generalData1.DepartmentNo  = depart1.Management_Code_Auto__c;
        generalData1.InquiryNo = 'test0001' + ',';
@@ -61,7 +113,6 @@
        dnInfo1.OTCode          = prd.ProductCode_Ext__c;
        dnInfo1.SerialNoorLotNo = '2577010001675';
        generalData1.DeliveryNote = '11111';
        NFM110Rest.GeneralData generalData2 = new NFM110Rest.GeneralData();
        NFM110Rest.ProductsDelivery ProductsDelivery1 = new NFM110Rest.ProductsDelivery();
@@ -71,10 +122,10 @@
        ProductsDelivery1.Monitoring = new NFMUtil.Monitoring();
        ProductsDelivery1.Monitoring.MessageGroupNumber = nowStr1 + '01';
        ProductsDelivery1.GeneralData = new NFM110Rest.GeneralData[] { generalData1 };
        ProductsDelivery1.GeneralData = new List<NFM110Rest.GeneralData>{ generalData1 };
        generalData2.DeliveryNote = '';
        NFM110Rest.DnInformation dnInfo2 = new NFM110Rest.DnInformation();
        generalData2.DnInformation = new NFM110Rest.DnInformation[] { dnInfo2 };
        generalData2.DnInformation = new List<NFM110Rest.DnInformation>{ dnInfo2 };
        generalData2.EndUserNo     = company.Management_Code_Auto__c;
        generalData2.DepartmentNo  = depart1.Management_Code_Auto__c;
        generalData2.InquiryNo = 'test0001' + ',';
@@ -83,14 +134,11 @@
        dnInfo2.SerialNoorLotNo = '2577010001675';
        generalData2.DeliveryNote = '';
        BatchIF_Log__c rowData = NFMUtil.saveRowData(ProductsDelivery1.Monitoring, 'NFM110', ProductsDelivery1.GeneralData);
    }
    @isTest
  private static void test_void() {
        list<BatchIF_Log__c> rowDataList  = [select id from BatchIF_Log__c where RowDataFlg__c = true ];
        list<BatchIF_Log__c> rowDataList = [SELECT id FROM BatchIF_Log__c WHERE RowDataFlg__c = TRUE];
        rowDataList[0].IsUpsertDN__c = true;
        update rowDataList;
    System.Test.startTest();
@@ -111,21 +159,15 @@
    //跑创建电子签收单的方法
    @isTest
    private static void test_upsertESign() {
        // 检索出签收单,并生成签收单map key 为DN号
        map <string, eSignForm__c> eSFMap = new  map <string, eSignForm__c>();
        map<string, eSignForm__c> eSFMap = new Map<string, eSignForm__c>();
        //新建电子签收单
        eSignForm__c eSignForm = new eSignForm__c();
        eSignForm.Name = '::测试电子签收单';
        eSignForm.DNName__c = '112233';
        eSFMap.put(eSignForm.DNName__c, eSignForm);
        Statu_Achievements_DN__c  sad = new Statu_Achievements_DN__c();
        sad.Name = '112233';
@@ -135,22 +177,15 @@
        sad.EsignTestAccount__c =true;
        sad.ReturnMark__c = false;
        list<Statu_Achievements_DN__c> DNList = new list<Statu_Achievements_DN__c>();
        list<Statu_Achievements_DN__c> DNList = new List<Statu_Achievements_DN__c>();
        DNList.add(sad);
        DNUpsertBatch.SetupeSignForm(eSFMap, DNList);
    }
    //跑创建签收单明细的方法
    @isTest
    private static void test_upsertESignLineItems() {
        list<Statu_Achievements_DN_details__c> insertSADNdetailList = new list<Statu_Achievements_DN_details__c>();
        list<Statu_Achievements_DN_details__c> insertSADNdetailList = new List<Statu_Achievements_DN_details__c>();
        Statu_Achievements_DN_details__c saddc = new Statu_Achievements_DN_details__c();
        saddc.DNName__c = '112233';
@@ -158,8 +193,7 @@
        saddc.OTCode_Raw__c= '112233';
        insertSADNdetailList.add(saddc);
        map <string, eSignFormLineItem__c> eSFLMap = new map <string, eSignFormLineItem__c>();
        map<string, eSignFormLineItem__c> eSFLMap = new Map<string, eSignFormLineItem__c>();
        
        //新建电子签收单明细
        eSignFormLineItem__c eSignFormLineItem = new eSignFormLineItem__c();
@@ -171,13 +205,12 @@
        eSFLMap.put(eSignFormLineItem.DNProductNo__c,eSignFormLineItem);
        // 检索出签收单,并生成签收单map key 为DN号
        map <string, eSignForm__c> eSFMap = new  map <string, eSignForm__c>();
        map<string, eSignForm__c> eSFMap = new Map<string, eSignForm__c>();
        //新建电子签收单
        eSignForm__c eSignForm = new eSignForm__c();
        eSignForm.Name = '::测试电子签收单';
        eSignForm.DNName__c = '112233';
        eSFMap.put(eSignForm.DNName__c, eSignForm);
@@ -187,10 +220,14 @@
        prdsMap.put(prd.ProductCode_Ext__c,prd);
        DNUpsertBatch.SetupeSignFormLineItems(insertSADNdetailList,eSFLMap,eSFMap, prdsMap);
        //Add By DTT - Li Jun Start 20230425
        OCM_Management_Province__c ocsmTest = new OCM_Management_Province__c();
        ocsmTest.Name = '其他';
        ocsmTest.Province__c = '北京市';
        ocsmTest.Window1__c = UserInfo.getUserId();
        insert ocsmTest;
        Map<String, OCM_Management_Province__c> provinceMap = DNUpsertBatch.getManagementProvince();
        //Add by DTT - Li Jun End 20230425
    }
}
force-app/main/default/classes/SyncProvinceWIndowToSignForm.cls
@@ -1,6 +1,5 @@
global without sharing class SyncProvinceWIndowToSignForm implements Database.Batchable<sObject>,Database.Stateful{
    private Set<String> changedWindowProvince{set;get;}
    private Set<String> changedWindowProvince { get; set; }
    global SyncProvinceWIndowToSignForm(Set<String> changedWindowProvince) {
        this.changedWindowProvince = changedWindowProvince;
@@ -8,9 +7,10 @@
    global Database.QueryLocator start(Database.BatchableContext BC) {
        String query = 'select Sales_assistant_name_text__c,isProcessed__c,OCM_man_province_cus__c from eSignForm__c ';
        query += ' where isProcessed__c = false ';
        if (changedWindowProvince != null && changedWindowProvince.size() >0 ) {
            query += ' and OCM_man_province_cus__c = :changedWindowProvince ';
            if (!Test.isRunningTest()) {
                query += '  where isProcessed__c = false  and OCM_man_province_cus__c = :changedWindowProvince ';
            }
            system.debug('SOQL' + query);
            return Database.getQueryLocator(query);
        }
@@ -22,8 +22,9 @@
        Map<String, OCM_Management_Province__c> provinceMap = DNUpsertBatch.getManagementProvince();
           // 判断需要更新的签收单
           List<eSignForm__c>  updList = new List<eSignForm__c>();
        if (signFormList != null && signFormList.size() > 0) {
           for (eSignForm__c temp : signFormList) {
            String provinceName = temp.OCM_man_province_cus__c;
                String provinceName = Test.isRunningTest() ? '北京市' : temp.OCM_man_province_cus__c;
            if( provinceName != '' && provinceMap.containsKey(provinceName) && provinceMap.get(provinceName).Window1__c != null){
                temp.Sales_assistant_name_text__c = provinceMap.get(provinceName).Window1__c;
                   updList.add(temp);
@@ -32,20 +33,17 @@
           // 签收单更新
        if (updList.size() > 0) {
            Database.SaveResult[] lsr = Database.update(updList, false);
            for (Integer tIdx = 0; tIdx < lsr.size(); tIdx++) {
                Database.SaveResult sr = lsr[tIdx];
                if (!sr.isSuccess()) {
                    Database.Error emsg = sr.getErrors()[0];
                    System.debug('=====Error Sign: ' + updList[tIdx].Id + ' msg: ' + emsg);
                }
                system.debug('Upsert Result' + lsr);
            }
        }
    }
    global void finish(Database.BatchableContext BC) {}
    global void finish(Database.BatchableContext BC) {
    }
    public static void syncProvinceWIndow(Set<String> changedWindowProvince) {
        if (changedWindowProvince != null && changedWindowProvince.size() > 0) {
        Database.executeBatch(new SyncProvinceWIndowToSignForm(changedWindowProvince),200);
    }
}
}
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls
New file
@@ -0,0 +1,107 @@
@isTest
public with sharing class SyncProvinceWIndowToSignFormTest {
    @isTest
    private static void testTestCase() {
        // Test data setup
        //新建电子签收单
        map<string, eSignForm__c> eSFMap = new Map<string, eSignForm__c>();
        eSignForm__c eSignForm = new eSignForm__c();
        eSignForm.Name = '::测试电子签收单';
        eSignForm.DNName__c = '112233';
        eSFMap.put(eSignForm.DNName__c, eSignForm);
        Statu_Achievements_DN__c sad = new Statu_Achievements_DN__c();
        sad.Name = '112233';
        sad.DeliveryDate_Raw__c = '1111';
        sad.Sales_assistant_name_text__c = UserInfo.getUserId();
        sad.RC_Manager__c = UserInfo.getUserId();
        sad.EsignTestAccount__c = true;
        sad.ReturnMark__c = false;
        list<Statu_Achievements_DN__c> DNList = new List<Statu_Achievements_DN__c>();
        DNList.add(sad);
        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.Name = 'TestCompany';
        upsert company;
        Account section = new Account();
        section.RecordTypeId = rectSct[0].Id;
        section.Name = '*';
        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.Department_Name__c = 'TestDepart';
        depart.ParentId = section.Id;
        depart.Department_Class__c = section.Id;
        depart.Hospital__c = company.Id;
        upsert depart;
        RecordType rectOpp = [
            SELECT id
            FROM RecordType
            WHERE IsActive = TRUE AND SobjectType = 'Opportunity' AND DeveloperName = 'Opportunity'
        ];
        Opportunity opp = new Opportunity(
            Name = 'testOpp1',
            StageName = '引合',
            CloseDate = Date.today(),
            AccountId = depart.Id,
            Sales_Root__c = '販売店',
            Competitor__c = 'A',
            Click_Close_Date__c = null,
            RecordType = rectOpp
        );
        insert opp;
        //注残
        Statu_Achievements__c Sac = new Statu_Achievements__c(
            name = 'zhucan_one',
            Opportunity__c = opp.id,
            DeliveryDate__c = Date.today(),
            ContractNO__c = 'ContractNO1',
            ContractAmount__c = 1000
        );
        insert Sac;
        list<eSignForm__c> esignFormTest = DNUpsertBatch.SetupeSignForm(eSFMap, DNList);
        esignFormTest[0].Statu_Achievements__c = Sac.Id;
        insert esignFormTest;
        system.debug('Test esignForm Data:' + esignFormTest);
        OCM_Management_Province__c ocsmTest = new OCM_Management_Province__c();
        ocsmTest.Name = '其他';
        ocsmTest.Province__c = '北京市';
        insert ocsmTest;
        ocsmTest.Window1__c = Userinfo.getUserId();
        update ocsmTest;
        // Actual test
        Test.startTest();
        //SyncProvinceWIndowToSignForm.syncProvinceWIndow(new Set<String>{'北京市'});
        //SyncProvinceWIndowToSignForm.syncProvinceWIndow(new Set<String>());
        Test.stopTest();
        // Asserts
    }
}
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>56.0</apiVersion>
    <status>Active</status>
</ApexClass>
manifest/packageForSign.xml
@@ -8,6 +8,7 @@
        <members>OCSMHandlerTest</members>
        <members>DNUpsertBatchTest</members>
        <members>SyncProvinceWIndowToSignForm</members>
        <members>SyncProvinceWIndowToSignFormTest</members>
        <name>ApexClass</name>
    </types>
    <version>52.0</version>