版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

配置完成时效果图:


打开配置好的云函数,复制以下代码并根据实际情况进行修改(修改项为☆☆☆; 禁止修改项为★★★,其他的有代码能力的可以修改,否则勿动!!!)根据实际情况进行修改(必须确认修改项为☆☆☆标识; 禁止修改项为★★★标识,其他的有代码能力的可以修改,否则勿动!!!)


代码块
languagepy
title云函数代码
linenumberstrue
collapsetrue
class UniquenessChecker(DynamicCheckBase):
    """
    云函数校验器示例,在对象新增,修改时会校验
    """

    def check(self, info):
        # ☆☆☆model:为校验的模型名,可根据实际情况修改☆☆☆
        model = "EmployeeEducation"
        employee_id = info['employee_id']
        info_list = CustomerUtil.call_open_api('hcm.model.list', {
            "model": model,
            "filter_dict": {
                "employee_id": employee_id
            },
            "page_index": 1,
            "page_size": 200,
            "extra_property": {"sorts": []}
        })['list']

        # ☆☆☆校验项,根据实际情况修改(请配置校验字段的key以及该字段值为“是”和“否”的实际存储值)☆☆☆
        # ☆☆☆以下示例为校验多项字段的配置,如只校验单一字段,请去掉多余字段☆☆☆
        check_item_dict_list = [
            {
                "key": "is_highest",  # 是否最高学历的key
                "yes_flag": 1,  # 是否最高学历为“是”
                "no_flag": 0  # 是否最高学历“否”
            },
            {
                "key": "is_highest_deg",  # 是否最高学位的key
                "yes_flag": "1",  # 是否最高学位为“是”
                "no_flag": "0"  # 是否最高学位“否”
            },
            {
                "key": "full_highest_edu",  # 是否全日制最高学历的key
                "yes_flag": 1,  # 是否全日制最高学历为“是”
                "no_flag": 0  # 是否全日制最高学历“否”
            },
            {
                "key": "full_highest_deg",  # 是否全日制最高学位的key
                "yes_flag": 1,  # 是否全日制最高学位为“是”
                "no_flag": 0  # 是否全日制最高学位“否”
            }
        ]
        total_result = self.total_check(info, info_list, check_item_dict_list)
        return {"success": total_result}

    # ★★★无需修改★★★
    def total_check(self, info, info_list, check_item_dict_list):
        for item in check_item_dict_list:
            key = item['key']
            yes_flag = item['yes_flag']
            no_flag = item['no_flag']
            item_result = self.item_check(info, info_list, key, yes_flag, no_flag)
            if not item_result:
                return False
        return True

    # ★★★无需修改★★★
    def item_check(self, info, info_list, key, yes_flag, no_flag):
        list_id = info.get('id')
        flag = info.get(key)

        if len(info_list) == 0:
            return True
        else:
            id_list = [item['id'] for item in info_list]
            # 如果id列表不包含表单的id(新增)
            if list_id not in id_list:
                for item in info_list:
                    if item[key] == yes_flag and flag == yes_flag:
                        return False
                return True
            # 如果id列表中包含表单的id(修改)
            else:
                if flag == no_flag:
                    return True
                else:
                    for item in info_list:
                        if item['id'] == list_id:
                            continue
                        if item[key] == yes_flag and flag == yes_flag:
                            return False
                    return True

...