一、功能定位
适用于以下场景:
1、校验入职/采集的子集必填
2、校验入职/采集的子集必填字段是否填写完整
3、‘最高学历有且只有一条’、‘任职和外部工作时间连续' 等更复杂的数据校验规则,扩展性更强
二、功能操作
功能路径:【组织人事】-【数据校验方案】
1、基本信息
标准出厂预制了2套数据校验方案,一套入职校验方案,一套采集入职方案(升级接口:update.employee.check.program)
属性说明:
- 编码:唯一即可;
- 名称:方案名称;
- 类型:该校验是用在入职管理中,还是信息采集中;
- 适用组织:该方案用在哪个组织下,符合条件的上级组织会一起进行校验;
- 维护组织:该方案的维护组织,方案的数据权限根据该字段进行过滤;
- 适用用工类型:该方案给哪些用工类型的人员使用。
适用组织和维护组织?
常见场景:集团管控,集团给下属子公司统一设置了一套校验方案,子公司可以在此基础上进行扩展,且不允许修改集团设置的校验方案
2、校验条目
属性说明:
- 编码:唯一即可;
- 名称:校验条目;
- 校验公式:目前子集必填校验、子集必填字段填写完整校验都统一规划在【数据校验方案】中设置,后面详细给大家介绍公式都如何使用
- 提示信息:若校验不通过,提示什么内容的信息
- 所属子集:若校验不通过,会在子集导航栏中显示叹号,该字段用来表示叹号显示在哪个子集上。比如说会有一些跨子集的校验,如:外部工作经历子集的第一条数据的开始时间需与主集'参加工作日期'相同,该参数是用来控制校验条目是在填写主集时校验还是在填写外部工作经历子集时校验
- 应用场景:入职专员端/入职员工端/采集专员端/采集员工端
若该人员的数据不符合设置的校验方案,比如设置了教育经历子集必填,但该人员教育经历子集没有数据,则会在base中显示叹号来查看被校验住的具体信息。(注意:只有不符合校验条目的子集数据会显示出叹号,代表该子集数据源需要继续完善,该叹号会代替之前的子集必填的红色*号以及填写完成后的√号)
3、匹配条件扩展
4、校验公式
(1)SUBSET_NOT_NULL 子集不能为空
子集不能为空 :param model:比如"Employee" :return:
该公式通常用于校验入职或采集中某一子集是否必填(相当于之前在base模板中配置的子集required属性)。SUBSET_NOT_NULL('模型model名称')
(2)FIELD_NOT_NULL 根据元数据配置判断子集中的必填字段是否为空
根据元数据配置来判断字段是否为空 :param model: :return:
该公式通常用于校验入职或采集中某一子集中的info必填字段是否填写完整。FIELD_NOT_NULL('模型model名称')
(3)SUBSET_UNIQUE 子集某一字段的唯一性校验
唯一性检验 :param model: 模型比如"PreEmployeeEducation" :param field: 模型对应字段"is_first" :param value: 字段对应唯一值 :return: 例如:最高学历有且只有一条SUBSET_UNIQUE("PreEmployeeEducation","is_first","1")
该公式常用于校验“最高学历有且只有一条”、“第一学历有且只有一条”等,但项目上也可配置在其他自定义子集中使用。SUBSET_UNIQUE("模型名称model","校验字段key值","字段对应的值")
(4)MOST_ONE 最多只有一条校验
最多只有一条检验 :param model: 模型比如"PreEmployeeEducation" :param field: 模型对应字段"is_first" :param value: 字段对应唯一值 :return: 例如:MOST_ONE("PreEmployeeEducation","is_first","1")
该公式与公式3.的区别在于公式3校验的是某个属性有且只有一条(即存在且唯一),该公式用于校验某个属性最多只有一条,即可以没有数据,若有数据该属性最多只能有一个
(5)SUBSET_TIME_CONTINUITY 子集时间连续
子集时间连续校验 上一条数据的结束时间(end_date)与下一条数据的开始时间(begin_date)连续 :param model: 模型比如"PreOuterExperience" :param begin_date_field:必填 开始时间字段 :param end_date_field:必填 结束时间字段 :param check_type: 必填 可选1:后一条的开始日期比前一条结束日期多一天;2:后一条的开始时间与前一条结束时间相等;3:工作经历中的最早时间与工作经历中最晚时间之间没有空档期 :return:
该公式常用于校验“外部工作经历子集时间连续”等与时间连续有关的校验。SUBSET_TIME_CONTINUITY(model, begin_date_field=’begin_date’, end_date_field=’end_date’)参数含义分别为:该模型中的begin_date和end_date时间连续
(6)EMP_GET_DATA 获取人员主集信息字段
获取人员信息字段 :param field:比如"take_work_time" :param default: "数据为空返回的默认值" :return:
该公式常用于获取人员主集字段的数据,一般和其他公式一起结合使用,如校验“外部工作经历子集的开始时间等于主集参加工作时间”。EMP_GET_DATA(self, field, default=None)
(7)SUBSET_GET_DATA 获取子集中符合条件的第一条数据中某个字段
获取子集中符合条件的第一条数据中某个字段 :param model: 模型比如"PreOuterExperience" :param field: 上述模型中的字段如"begin_date" :param sorts:如获取工作经历子集中最早一条的开始时间,则先要将数据整理一下,按照开始时间进行升序排序,然后取第一条的开始时间[{"key": "begin_date", "type": "asc"}] :param filters:跟元数据配置中filter一样,配置过滤条件,如获取教育经历子集中第一学历为是的那条数据的开始时间,如{"is_first":1, ...} :param state: :param default: "数据为空返回的默认值",默认填None即可 :return:
该公式常用于获取子集中符合某条件的某条数据的字段,如获取“工作经历中最早的开始时间”、“教育经历的第一学历的毕业时间”等。
常与公式EMP_GET_DATA结合使用,例如:校验外部工作经历子集中最早一条的开始时间要与主集中的参加工作日期相等
SUBSET_GET_DATA("PreOuterExperience","begin_date",None,None,[{"key": "begin_date", "type":"asc"}])==EMP_GET_DATA("take_work_time")
(8)FIELD_REQUIRED_IN_CONDITIONS 满足条件的数据,指定的字段需要填写完整
满足条件的数据,指定的字段需要填写完整 :param model: 模型,如 PreEmployeeEducation :param required_fields: 必填字段列表,如 ['education'] :param filters: 选填,需要校验的数据条件,格式如 {'is_first': 1},不填将校验全部子集数据 :param must_null_fields: 选填,必须为空的字段列表 :return:
该公式常用于对符合某条件的字段进行完整性校验,常见场景“标记为第一学历的教育经历学历必填”,"标记为最高学位的教育经历学位必填",“预备党员必须填写加入时间且不能填写转正时间”,如FIELD_REQUIRED_IN_CONDITIONS('PreEmployeeEducation', ['education'], {'is_first': '1'})
“专科及以上学历需要上传证书扫描件”:FIELD_REQUIRED_IN_CONDITIONS('PreEmployeeEducation', ['attach_index'], {'education': ['大学专科', '大学本科', '研究生']})
(9)DATETIME_FIT_COMPARISION 满足提交的数据,日期符合先后关系
满足提交的数据,日期符合先后关系,注意如果两个日期有一个没有填写则不会校验 :param model: 模型,如 PreEmployeeEducation :param field1: 时间字段1,如 from_date :param field2: 时间字段2,如 end_date :param comparison: 时间关系,支持 >、>=、<、<=、==、!= :param filters: 选填,需要校验的数据条件,格式如 {'is_first': 1},不填将校验全部子集数据 :return:
该公式常用于校验两个日期之前的先后关系,常见场景“外部工作经历的结束时间应该晚于开始时间”,如DATETIME_FIT_COMPARISION('PreOuterExperience', 'begin_date', 'end_date', '<')
(10)DATA_EXISTS_IN_CONDITIONS 满足条件的人员必须填写指定的子集
满足条件的人员必须填写指定的子集 :param model: 模型,如 PreFamilyInformation :param subset_filters: 选填,存在符合指定条件的子集数据,不指定的话则只要存在任意一条数据即可,如 {'appellation': '夫妻'} :param emp_filters: 选填,哪些人必须填写符合条件的子集数据,该参数用于指定【人员基本信息】的条件 :return:
该公式常用于校验某些人员必须填写子集的某条数据,其中第2个参数是指必须填写符合指定条件的子集数据(如果不传就是任意一条数据即可),第3个参数是指,某类人必须要填写上述条件数据,如果不传即所有人。常见场景“已婚需填写家庭信息中的夫妻信息”,如DATA_EXISTS_IN_CONDITIONS('PreFamilyInformation', {'appellation': '夫妻'}, {'married': '已婚'})
(11)DATA_NOT_EXISTS_IN_CONDITIONS 满足条件的人员【不能】填写指定的子集
满足条件的人员【不能】填写指定的子集 :param model: 模型,如 PreEmployeeEducation :param subset_filters: 选填,不存在符合指定条件的子集数据,不指定的话则任何数据都不能存在 :param emp_filters: 选填,哪些人不能填写该子集,该参数用于指定【人员基本信息】的条件 :return:
该公式常用于校验某些人员不必须填写子集的某条数据,参数含义同公式10。常见场景比如“当个人身份为工人时,干部培训子集为空”,如DATA_EXISTS_IN_CONDITIONS('PreTrainingInformation', {'identity_type': '0'})
5、校验仓库
仓库中是一些标准预制的校验条目,可直接把校验条目从仓库中引入下来使用
增加公式检查工具:校验条目-测试
检查项目:(1)计算结果:校验公式是否正确(2)计算结论:该人员校验项是否通过