buli
2023-04-25 399b453ac2f611473885681688f6aa69029e65b8
backup
2个文件已添加
3个文件已修改
390 ■■■■■ 已修改文件
force-app/main/default/classes/DNUpsertBatchTest.cls 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignForm.cls 80 ●●●● 补丁 | 查看 | 原始文档 | 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
@@ -1,11 +1,11 @@
@isTest(SeeAllData = false)
@isTest(SeeAllData=false)
public class DNUpsertBatchTest {
    static Account company;
    static Account section1;        // 呼吸科
    static Account section2;        // 消化科
    static Account section1; // 呼吸科
    static Account section2; // 消化科
    static Account olympus;
    static Account olympus1;        // 呼吸科
    static Account olympus2;        // 消化科
    static Account olympus1; // 呼吸科
    static Account olympus2; // 消化科
    static Account depart1;
    static Account depart2;
    @testSetup
@@ -16,30 +16,82 @@
        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);
        Product2__c pro1 = new Product2__c(Name = 'NFM110Prd1', OT_CODE_Text__c = 'NFM110Prd1', Product2__c = prd.id);
        insert pro1;
        NFM110Rest.GeneralData generalData1 = new NFM110Rest.GeneralData();
@@ -50,18 +102,17 @@
        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.EndUserNo     = company.Management_Code_Auto__c;
        generalData1.DepartmentNo  = depart1.Management_Code_Auto__c;
        generalData1.DnInformation = new List<NFM110Rest.DnInformation>{ dnInfo1 };
        generalData1.EndUserNo = company.Management_Code_Auto__c;
        generalData1.DepartmentNo = depart1.Management_Code_Auto__c;
        generalData1.InquiryNo = 'test0001' + ',';
        dnInfo1.SorLMark        = 'S';
        dnInfo1.OTCode          = prd.ProductCode_Ext__c;
        dnInfo1.SorLMark = 'S';
        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,38 +122,35 @@
        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.EndUserNo     = company.Management_Code_Auto__c;
        generalData2.DepartmentNo  = depart1.Management_Code_Auto__c;
        generalData2.DnInformation = new List<NFM110Rest.DnInformation>{ dnInfo2 };
        generalData2.EndUserNo = company.Management_Code_Auto__c;
        generalData2.DepartmentNo = depart1.Management_Code_Auto__c;
        generalData2.InquiryNo = 'test0001' + ',';
        dnInfo2.SorLMark        = 'S';
        dnInfo2.OTCode          = prd.ProductCode_Ext__c;
        dnInfo2.SorLMark = 'S';
        dnInfo2.OTCode = prd.ProductCode_Ext__c;
        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 ];
    private static void test_void() {
        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();
        Database.executeBatch(new DNUpsertBatch(rowDataList[0].Id),1);
        System.Test.startTest();
        Database.executeBatch(new DNUpsertBatch(rowDataList[0].Id), 1);
        System.Test.stopTest();
    }
    @isTest
  private static void test_checkSerialNoorLotNo() {
    private static void test_checkSerialNoorLotNo() {
        string a = 'strsA0trstr';
        string b = 'strA50trstr';
        string c = 'str250trstr';
        DNUpsertBatch.checkSerialNoorLotNo(a);
        DNUpsertBatch.checkSerialNoorLotNo(b);
        DNUpsertBatch.checkSerialNoorLotNo(c);
@@ -111,56 +159,42 @@
    //跑创建电子签收单的方法
    @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();
        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.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';
        saddc.CaseNumber__c = '112233';
        saddc.OTCode_Raw__c= '112233';
        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();
        eSignFormLineItem.Name = '::电子签收单明细';
@@ -168,29 +202,32 @@
        eSignFormLineItem.DNProductNo__c = '112233-112233-112233';
        eSignFormLineItem.Count__c = 0;
        eSFLMap.put(eSignFormLineItem.DNProductNo__c,eSignFormLineItem);
        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);
        Map<String, Product2> prdsMap = new Map<String, Product2>();
        Product2 prd  = new Product2();
        Product2 prd = new Product2();
        prd.ProductCode_Ext__c = '112233';
        prdsMap.put(prd.ProductCode_Ext__c,prd);
        prdsMap.put(prd.ProductCode_Ext__c, prd);
        DNUpsertBatch.SetupeSignFormLineItems(insertSADNdetailList,eSFLMap,eSFMap, prdsMap);
        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,51 +1,49 @@
global without sharing class SyncProvinceWIndowToSignForm implements Database.Batchable<sObject>,Database.Stateful{
global without sharing class SyncProvinceWIndowToSignForm implements Database.Batchable<sObject>, Database.Stateful {
    private Set<String> changedWindowProvince { get; set; }
    private Set<String> changedWindowProvince{set;get;}
    global SyncProvinceWIndowToSignForm(Set<String> changedWindowProvince) {
        this.changedWindowProvince = changedWindowProvince;
    }
    global SyncProvinceWIndowToSignForm(Set<String> changedWindowProvince) {
        this.changedWindowProvince = changedWindowProvince;
    }
    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 ';
        if (changedWindowProvince != null && changedWindowProvince.size() > 0) {
            if (!Test.isRunningTest()) {
                query += '  where isProcessed__c = false  and OCM_man_province_cus__c = :changedWindowProvince ';
            }
            system.debug('SOQL' + query);
            return Database.getQueryLocator(query);
        }
        return null;
    }
    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 ';
            system.debug('SOQL' + query);
            return Database.getQueryLocator(query);
        }
        return null;
    }
       global void execute(Database.BatchableContext BC, List<eSignForm__c> signFormList) {
           // 取得OCM管理省信息
        Map<String, OCM_Management_Province__c> provinceMap = DNUpsertBatch.getManagementProvince();
           // 判断需要更新的签收单
           List<eSignForm__c>  updList = new List<eSignForm__c>();
           for (eSignForm__c temp : signFormList) {
            String provinceName = 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);
               }
           }
           // 签收单更新
        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);
    global void execute(Database.BatchableContext BC, List<eSignForm__c> signFormList) {
        // 取得OCM管理省信息
        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 = 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);
                }
            }
            // 签收单更新
            if (updList.size() > 0) {
                Database.SaveResult[] lsr = Database.update(updList, false);
                system.debug('Upsert Result' + lsr);
            }
        }
    }
    }
    global void finish(Database.BatchableContext BC) {}
    global void finish(Database.BatchableContext BC) {
    }
    public static void syncProvinceWIndow(Set<String> changedWindowProvince) {
        Database.executeBatch(new SyncProvinceWIndowToSignForm(changedWindowProvince),200);
        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>