本页中的内容:


定义人员编码规则

创建/修改元数据

人员编码生成时机:人员从【入职管理】到【人员信息管理】或者直接在【人员信息管理】新增人员

超级管理员进入【设置】-【对象管理器】-搜索“Employee”

点击选中的此对象,进入对象管理。

点击右上角【元数据编辑】,如果打开之后为空,则直接粘贴以下内容

{
    "plugins": [{
        "type": "pre_create_data",
        "name": "employee_number_generator",
        "key": "pre_create_data"
    }]
}

如果已经存在配置的json文件,如图所示

则在图中粘贴以下内容

    "plugins": [{
        "type": "pre_create_data",
        "name": "employee_number_generator",
        "key": "pre_create_data"
    }],

人员编码生成时机:【招聘模块】进入到【入职管理】或者直接在【入职管理】新增

如果是从【招聘模块】进入到【入职管理】,对象管理器搜索内容改为【PreEmployee】,而且以上用的代码块的红框内容改为【pre_free_create】

友情提示:如果两种入职方式都存在,则两个地方都需要配置

这段代码是在新增人员的时候会执行pre_create_data和pre_free_create方法

name是新建云函数的插入点名称(下一段会介绍如何新增该云函数)

新建employee_number_generator的云函数插入点

点击【云函数管理】-搜索“employee_number_generator”,找不到对应的元数据,点击【新增】

注意:开发提供云函数之后,用开发提供的云函数名称替换【employee_number_generator】,后续步骤都需替换!

填写基本信息后,点击【确定】

名称填写“employee_number_generator”类型选择“模型插件”
描述自动输入,例如“人员排序码按规则自动生成”启用勾选“是”

点击刚建好的云函数

拷贝以下代码,可根据项目情况自行调整以下参数实现自定义编码规则:

serial.order.add是设置编码规则的接口,以下为参数介绍:

order_length代表生成规则的位数(不包括group_flag)
serial_group作为识别此排序码的记录标志(一个组织下或者公司有一个特定的编码规则)
serial_start代表编码的起始值
serial_digit代表每个编码之间的差值
group_flag代表编码的前缀
range_id代表范围ID,填写内容与company_id一致即可(inspur4环境的公司ID为140)
class ModelPlugInEmp(BaseModelPlugIn):

    def pre(self, company_id, **kwargs):
        info = kwargs.get('info')
        info['number']=self.generate_employee_number()
        return kwargs

    def generate_employee_number(self):
        serial_rule = CustomerUtil.call_open_api('serial.order.get.by.serial.group',{'serial_group': "employeeNumber",'range_id': 140})
        if serial_rule.get('success') is False:
            CustomerUtil.call_open_api('serial.order.add',
                                       param={"info": {'rule': '{group_flag}{order}',
                                                       'order_length': 10, 'fill_char': 0,   
                                                       'serial_group': 'employeeNumber',
                                                       'serial_start': 10000,
                                                       'serial_digit': 1,
                                                       'range_id': 140
                                                      }})

        return CustomerUtil.call_open_api('serial.order.detail.next.get.by.group_flag', {
            'serial_group': 'employeeNumber',
            'range_id': 140,   
            'group_flag': 'xx', 
            'map_info': {}
        })



当我们定义好这个规则的时候,就可以每次在新增时生成想要的编码了~


验证人员编码自动生成

【人员信息管理】中新增人员,即按照设定好的规则自动生成编号。

如果历史数据需要按照最新定义的编码规则生成编号,请联系对应区域产品支持老师提供API修复。


定义岗位编码规则

创建/修改元数据

参考【定义人员编码规则】,对象管理器搜索改为搜索【OrgPosition】

打开为空和已存在配置的情况下分别使用以下两种json配置,具体参考【定义人员编码规则】,不做赘述

1、打开为空

{
    "plugins": [{
        "type": "pre_create_data",
        "name": "position_number_generator",
        "key": "pre_create_data"
    }]
}

2、已存在配置

    "plugins": [{
        "type": "pre_create_data",
        "name": "position_number_generator",
        "key": "pre_create_data"
    }],

新建position_number_generator的云函数插入点

点击【云函数管理】-搜索“position_number_generator”,找不到对应的元数据,点击【新增】,填写基本信息后,点击【确定】

注意:开发提供云函数之后,用开发提供的云函数名称替换【position_number_generator】,后续步骤都需替换!

名称填写“position_number_generator”类型选择“模型插件
描述自动输入,例如“岗位排序码按规则自动生成”启用勾选“是”

云函数代码内容:

class ModelPluginPost(BaseModelPlugIn):

    def pre(self, company_id, **kwargs):

        info = kwargs.get('info')
        info['number']=self.generate_position_number()
        return kwargs
    
    def post(self, company_id, result,**kwargs):

        return result
    
    def generate_position_number(self):
        serial_rule = CustomerUtil.call_open_api('serial.order.get.by.serial.group',
                                                 {'serial_group': 'PositionNumber',
                                                  'range_id': 140})
        if serial_rule.get('success') is False:
            CustomerUtil.call_open_api('serial.order.add',
                                       param={"info": {'rule': '{group_flag}{order}',
                                                       'order_length': 5, 'fill_char': 0,
                                                       'serial_group': 'PositionNumber',
                                                       'serial_start': 10000,
                                                       'serial_digit': 1,
                                                       'range_id': 140
                                                       }})
        return CustomerUtil.call_open_api('serial.order.detail.next.get.by.group_flag', {
            'serial_group': 'PositionNumber',
            'range_id': 140, 'group_flag': "xxx", 'map_info': {}
        })



验证岗位编码自动生成

【岗位管理】中新增岗位,编号将按照设定好的规则自动生成编号(需将岗位编号设置为非必填)

如果历史数据需要按照最新定义的编码规则生成编号,请联系孙伟达老师提供API修复。



定义单位编码规则

创建/修改元数据

参考【定义人员编码规则】,对象管理器搜索改为搜索【OrgUnit】

打开为空和已存在配置的情况下分别使用以下两种json配置,具体参考【定义人员编码规则】,不做赘述

1、打开为空

{
    "plugins": [{
        "type": "pre_create_data",
        "name": "orgunit_number_generator",
        "key": "pre_create_data"
    }]
}

2、已存在配置

    "plugins": [{
        "type": "pre_create_data",
        "name": "orgunit_number_generator",
        "key": "pre_create_data"
    }],


新建orgunit_number_generator的云函数插入点

点击【云函数管理】-搜索“orgunit_number_generator”,找不到对应的元数据,点击【新增】,填写基本信息后,点击【确定】

注意:开发提供云函数之后,用开发提供的云函数名称替换【orgunit_number_generator】,后续步骤都需替换!

名称填写“orgunit_number_generator”类型选择“模型插件
描述自动输入,例如“岗位排序码按规则自动生成”启用勾选“是”

云函数代码内容:

class ModelPlugInorgunit(BaseModelPlugIn):

    def pre(self, company_id, **kwargs):
        info = kwargs.get('info')
        info['number']=self.generate_orgunit_number()
        return kwargs

    def generate_orgunit_number(self):
        serial_rule = CustomerUtil.call_open_api('serial.order.get.by.serial.group',{'serial_group': "orgunitNumber",'range_id': 140})
        if serial_rule.get('success') is False:
            CustomerUtil.call_open_api('serial.order.add',
                                       param={"info": {'rule': '{group_flag}{order}',
                                                       'order_length': 4, 'fill_char': 0,   
                                                       'serial_group': 'orgunitNumber',
                                                       'serial_start': 1000,
                                                       'serial_digit': 1,
                                                       'range_id': 140
                                                      }})

        return CustomerUtil.call_open_api('serial.order.detail.next.get.by.group_flag', {
            'serial_group': 'orgunitNumber',
            'range_id': 140,   
            'group_flag': 'xx', 
            'map_info': {}
        })


定义部门编码规则

创建/修改元数据

参考【定义人员编码规则】,对象管理器搜索改为搜索【OrgDepartment】

打开为空和已存在配置的情况下分别使用以下两种json配置,具体参考【定义人员编码规则】,不做赘述

1、打开为空

{
    "plugins": [{
        "type": "pre_create_data",
        "name": "OrgDepartment_number_generator",
        "key": "pre_create_data"
    }]
}

1、已存在配置

    "plugins": [{
        "type": "pre_create_data",
        "name": "OrgDepartment_number_generator",
        "key": "pre_create_data"
    }],


新建OrgDepartment_number_generator的云函数插入点

点击【云函数管理】-搜索“OrgDepartment_number_generator”,找不到对应的元数据,点击【新增】,填写基本信息后,点击【确定】

注意:开发提供云函数之后,用开发提供的云函数名称替换【OrgDepartment_number_generator】,后续步骤都需替换!

名称填写“OrgDepartment_number_generator”类型选择“模型插件
描述自动输入,例如“岗位排序码按规则自动生成”启用勾选“是”

云函数代码内容:

class ModelPlugInOrgDepartment(BaseModelPlugIn):

    def pre(self, company_id, **kwargs):
        info = kwargs.get('info')
        info['number']=self.generate_OrgDepartment_number()
        return kwargs

    def generate_OrgDepartment_number(self):
        serial_rule = CustomerUtil.call_open_api('serial.order.get.by.serial.group',{'serial_group': "OrgDepartmentNumber",'range_id': 140})
        if serial_rule.get('success') is False:
            CustomerUtil.call_open_api('serial.order.add',
                                       param={"info": {'rule': '{group_flag}{order}',
                                                       'order_length': 6, 'fill_char': 0,   
                                                       'serial_group': 'OrgDepartmentNumber',
                                                       'serial_start': 10000,
                                                       'serial_digit': 1,
                                                       'range_id': 140
                                                      }})

        return CustomerUtil.call_open_api('serial.order.detail.next.get.by.group_flag', {
            'serial_group': 'OrgDepartmentNumber',
            'range_id': 140,   
            'group_flag': 'xx', 
            'map_info': {}
        })




  • 无标签

3 评论

  1. 连杏杏 发表:

    配置了部门编号规则,但是不生效什么原因呢 提示是顺序号规则未设置,以下是配置的云函数

  2. 席圣通 发表:

    配置了岗位编号规则,验证的时候提示“无法加载插件”,这是什么原因呢?

  3. 赵杰 发表:

    写的里面刚开始是人员编码,中间内容写的排序码,差点混乱了