插入点名称: insight_analysis_result_param_plugin (此插入点名称为固定写法, 类型选择其他即可, 一个公司下只需要配置一个即可, 多个过滤条件均可写在此云函数内)
示例: 中建三局一公司有个功能是对人员进行用工类型的限制, 即限制某些人员只能查看特定的用工类型人员, 有如下相关信息:
表明是希望当前用户oliver只能查看用工类型为 局自有 的人员信息
需求: 希望人力洞察该用户能分析的人员用工类型和此处配置的相同
解决方案: 在人力洞察中添加insight_analysis_result_param_plugin云函数, 云函数中通过获取上述功能中此人员的用工类型, 然后将此用工类型添加到过滤信息中
云函数代码如下:
class DynamicCondition(object): def execute(self, analysis_id, org, current_date, param,appoint_date=None): emp_category_id_list = [] # EmpCategoryPower为人员用工类型功能的存储模型 emp_category_power_list = \ CustomerUtil.call_open_api("hcm.model.list", param={"model": "EmpCategoryPower", "filter_dict": { "employee_id": CustomerUtil.get_current_context().employee.id}})['list'] # 获取EmpCategoryPower模型中于当前用户有关的相关信息 for item in emp_category_power_list: if item.get("employee_category_id") not in emp_category_id_list: emp_category_id_list.append(item.get("employee_category_id")) # 获取当前用户允许访问的用工类型id if emp_category_id_list and len(emp_category_id_list)>0:#为空的话不过滤 # 添加过滤条件到人力洞察的分析参数中 param['filter'].append({"key":"emp.s_employee_category","name":"用工类型","selected_text":"","value":emp_category_id_list}) logging.info("insight_plugin:{}:{}".format(emp_category_id_list,param)) return param
如果有多个过滤条件, 可以继续通过param['filter'].append()的方式将过滤条件添加到param中
总结: 该功能实际上就是将人力洞察的某些分析维度的过滤条件提前添加到所有分析模型中, filter中添加的过滤条件的格式和人力洞察前端传递的格式相同