dingtalk.client.api.employeerm 源代码

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import datetime
import json

from optionaldict import optionaldict

from dingtalk.core.utils import to_text
from dingtalk.client.api.base import DingTalkBaseAPI


[文档]class Employeerm(DingTalkBaseAPI): DATE_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
[文档] def get(self, userid): """ 获取智能人事员工花名册详细数据 :param userid: 查询用户userid :return: """ return self._top_request( 'dingtalk.corp.hrm.employee.get', {'userid': userid}, result_processor=lambda x: x['group_list'] )
[文档] def list(self, userid_list, field_filter_list=()): """ 批量获取员工花名册字段信息 智能人事业务,企业/ISV根据员工id批量访问员工花名册信息 :param userid_list: 员工id列表 :param field_filter_list: 需要获取的花名册字段信息 """ if isinstance(userid_list, (list, tuple, set)): userid_list = ','.join(map(to_text, userid_list)) if isinstance(field_filter_list, (list, tuple, set)): field_filter_list = ','.join(map(to_text, field_filter_list)) return self._top_request( "dingtalk.oapi.smartwork.hrm.employee.list", { "userid_list": userid_list, "field_filter_list": field_filter_list } )
[文档] def querypreentry(self, offset=0, size=50): """ 智能人事查询公司待入职员工列表 智能人事业务,企业/ISV分页查询公司待入职员工id列表 :param offset: 分页起始值,默认0开始 :param size: 分页大小,最大50 """ return self._top_request( "dingtalk.oapi.smartwork.hrm.employee.querypreentry", { "offset": offset, "size": size } )
[文档] def queryonjob(self, status_list=(), offset=0, size=50): """ 智能人事查询公司在职员工列表 智能人事业务,提供企业/ISV按在职状态分页查询公司在职员工id列表 :param status_list: 在职员工子状态筛选。2,试用期;3,正式;5,待离职;-1,无状态 :param offset: 分页起始值,默认0开始 :param size: 分页大小,最大50 """ if isinstance(status_list, (list, tuple, set)): status_list = ','.join(map(to_text, status_list)) return self._top_request( "dingtalk.oapi.smartwork.hrm.employee.queryonjob", { "status_list": status_list, "offset": offset, "size": size } )
[文档] def querydimission(self, offset=0, size=50): """ 智能人事查询公司离职员工列表 智能人事业务,提供企业/ISV分页查询公司离职员工id列表 :param offset: 分页游标,从0开始。根据返回结果里的next_cursor是否为空来判断是否还有下一页,且再次调用时offset设置成next_cursor的值 :param size: 分页大小,最大50 """ return self._top_request( "dingtalk.oapi.smartwork.hrm.employee.querydimission", { "offset": offset, "size": size } )
[文档] def listdimission(self, userid_list=()): """ 批量获取员工离职信息 根据传入的staffId列表,批量查询员工的离职信息 :param userid_list: 员工id """ if isinstance(userid_list, (list, tuple, set)): userid_list = ','.join(map(to_text, userid_list)) return self._top_request( "dingtalk.oapi.smartwork.hrm.employee.listdimission", { "userid_list": userid_list } )
[文档] def addpreentry(self, name, mobile, pre_entry_time=None, op_userid=None, extend_info=None): """ 智能人事添加企业待入职员工 :param name: 员工姓名 :param mobile: 手机号 :param pre_entry_time: 预期入职时间 :param op_userid: 操作人userid :param extend_info: 扩展信息 :return: """ if isinstance(pre_entry_time, (datetime.date, datetime.datetime)): pre_entry_time = pre_entry_time.strftime(self.DATE_TIME_FORMAT) if isinstance(extend_info, dict): extend_info = json.dumps(extend_info) return self._top_request( "dingtalk.oapi.smartwork.hrm.employee.addpreentry", { "param": optionaldict({ "name": name, "mobile": mobile, "pre_entry_time": pre_entry_time, "op_userid": op_userid, "extend_info": extend_info }) } )
[文档] def getdismissionlist(self, op_userid, current=1, page_size=100): """ 获取离职人员信息 :param op_userid: 操作人userid :param current: 第几页,从1开始 :param page_size: 一页多少数据,在1-100之间 :return: """ return self._top_request( 'dingtalk.corp.hrm.employee.getdismissionlist', {'op_userid': op_userid, 'current': current, 'page_size': page_size}, result_processor=lambda x: x['page'] )
[文档] def setuserworkdata(self, op_userid, userid, data_value, data_desc=None): """ 更新用户绩效数据 :param op_userid: 操作人userid,必须是拥有被操作人操作权限的管理员userid :param userid: 被操作人userid :param data_value: 数据值,可以为数值或者字符串 :param data_desc: 数据项描述信息 :return: """ hrm_api_user_data_model = {'userid': userid, 'data_value': data_value, 'data_desc': data_desc} return self._top_request( 'dingtalk.corp.hrm.employee.getdismissionlist', {'op_userid': op_userid, 'hrm_api_user_data_model': hrm_api_user_data_model} )
[文档] def modjobinfo(self, op_userid, userid, employee_type=None, employee_status=None, confirm_join_time=None, probation_period_type=None, regular_time=None, join_working_time=None, birth_time=None): """ 更新员工工作信息 :param op_userid: 操作人userid,必须是拥有被操作人操作权限的管理员userid :param userid: 被操作人userid :param employee_type: 员工类型(1:全职,2:兼职,3:实习,4:劳务派遣,5:退休返聘,6:劳务外包) :param employee_status: 员工状态(2:试用,3:正式) :param confirm_join_time: 入职日期 :param probation_period_type: 试用期(1:无试用期,2:1个月,3:2个月,4:3个月,5:4个月,6:5个月,7:6个月,8:其他) :param regular_time: 转正时间 :param join_working_time: 首次参加工作时间 :param birth_time: 生日日期 :return: """ if confirm_join_time is not None and isinstance(confirm_join_time, (datetime.date, datetime.datetime)): confirm_join_time = confirm_join_time.strftime('%Y-%m-%d %H:%M:%S') if regular_time is not None and isinstance(regular_time, (datetime.date, datetime.datetime)): regular_time = regular_time.strftime('%Y-%m-%d %H:%M:%S') if join_working_time is not None and isinstance(join_working_time, (datetime.date, datetime.datetime)): join_working_time = join_working_time.strftime('%Y-%m-%d %H:%M:%S') if birth_time is not None and isinstance(birth_time, (datetime.date, datetime.datetime)): birth_time = birth_time.strftime('%Y-%m-%d %H:%M:%S') hrm_api_job_model = { 'userid': userid, 'employee_type': employee_type, 'employee_status': employee_status, 'confirm_join_time': confirm_join_time, 'probation_period_type': probation_period_type, 'regular_time': regular_time, 'join_working_time': join_working_time, 'birth_time': birth_time } return self._top_request( 'dingtalk.corp.hrm.employee.modjobinfo', {'op_userid': op_userid, 'hrm_api_job_model': hrm_api_job_model} )