01.发送消息通知

发送消息通知
class salary_entry_emp_warn(object):
    def execute(self,params):
        last_month = (datetime.datetime.now() + dateutil.relativedelta.relativedelta(months=-1)).strftime("%Y-%m")
        emp_list =self.get_entry_emp_list(month=last_month)
        if not emp_list:
            return
        role_list = self.get_salary_role_list()
        if not role_list:
            return
        emp_dict = {}
        for emp in emp_list:
            depart_id=emp.get("department").get("origin_id")
            if not depart_id:
                continue
            emp_dict[depart_id] = emp_dict.get(depart_id,"") + "{}({}) ".format(emp.get("name"),emp.get("number"))
        #组装消息
        msg_list = []
        for k, v in emp_dict.items():
            #接收人id
            receiver_id_list = [p.get("object_id") for p in role_list if p.get("role_range").get("depart_id") == k]
            #消息内容
            message = "{}-21号之后入职的员工有:{}".format(last_month,v)
            for receiver_id in receiver_id_list:
                msg_list.append({"sender": 0, "to": receiver_id, "content": message})
        if not msg_list:
            return
        #发送消息
        CustomerUtil.call_open_api(name="message.send.message", param={"msglist": msg_list})
       
    def get_entry_emp_list(self,month):
        """
        获取人员数据
        :param month: 
        :return: 
        """
        return  CustomerUtil.call_open_api(
            name="hcm.model.list",
            param={
                "model": "Employee",
                "page_index": 1,
                "page_size": 9999,
                "filter_dict": {
                    "entry_date": {"gte": "{}-21".format(month)}
                },
                "extra_property": {
                    "only_list": True,
                    "state": "search_zcl",
                    "sorts": [{"type": "asc", "key": "number"}],
                    "fields": [
                        {"field": ["name"], "key": "employee_name"},
                        {"field": ["number"], "key": "employee_number"},
                        {"field": ["department", "origin_id"], "key": "depart_id"}
                    ]
                }
            }
        )["list"]
    def get_salary_role_list(self):
        """
        获取薪酬专员角色信息
        :return: 
        """
        return CustomerUtil.call_open_api(
            name="hcm.model.list",
            param={
                "model": "SystemEmployeeRoles",
                "page_index": 1,
                "page_size": 9999,
                "filter_dict": {
                    "object_type": 1,
                    "role": "cm-salary"
                },
                "extra_property": {
                    "state": "search_zcl",
                    "only_list": True,
                    "fields": [
                        {"field": ["object_id"], "key": "object_id"},
                        {"field": ["object_type"], "key": "object_type"},
                        {"field": ["role"], "key": "role"},
                        {"field": ["role_range", "depart_id"], "key": "depart_id"}
                    ],
                    "relations": [
                        {
                            "filter": {
                                "role_range.object_type": 1,
                                "role_range.role": "cm-salary",
                                "object_id": ":role_range.object_id"
                            },
                            "type": "outer",
                            "model": "SystemRoleRange",
                            "key": "role_range"
                        }
                    ]
                }

            }
        )["list"]

02.公有云发送邮件

邮件配置:参考wiki标准消息集成

公有云发送邮件
class send_email_message(object):
    """
    发送邮件信息
    """

    def execute(self, params):
        self.send_birthday_card_info()

    def send_birthday_card_info(self):
        """
        发送生日卡片信息
        :return:
        """
        # 获取当天过生日的员工卡信息
        emp_card_list = CustomerUtil.call_open_api(
            name="hcm.model.list",
            param={
                "model": "emp_welfare_card",
                "page_index": 1,
                "page_size": 9999,
                "filter_dict": {
                    "year": datetime.datetime.now().strftime("%Y"),
                    "type_id": 1325849,  # 生日卡片
                    "state": {"neq": 1},  # 未发送的数据
                    "employee.birthday": {"like": datetime.datetime.now().strftime("%m-%d")}
                },
                "extra_property": {
                    "state": "search_zcl",
                    "only_list": True,
                    "fields": [
                        {"field": ["employee_id"], "key": "employee_id"},
                        {"field": ["employee", "name"], "key": "employee_name"},
                        {"field": ["employee", "number"], "key": "employee_number"},
                        {"field": ["employee", "mail"], "key": "employee_mail"},
                        {"field": ["employee", "birthday"], "key": "employee_birthday"},
                        {"field": ["number"], "key": "number"},
                        {"field": ["password"], "key": "password"}
                    ],
                    "relations": [
                        {
                            "filter": {
                                "employee.id": ":employee_id"
                            },
                            "model": "Employee",
                            "key": "employee",
                            "type": "outer"
                        }
                    ]
                }
            }
        )
        for emp_card in emp_card_list:
            if not emp_card.get("employee").get("mail") or not emp_card.get("number") or not emp_card.get("password"):
                continue
            if str(emp_card.get("employee").get("birthday"))[-5:] == datetime.datetime.now().strftime("%m-%d"):
                #发送邮件
                MessageService(CustomerUtil.get_current_context()).send_message(
                    company=CustomerUtil.get_current_context().company.id,
                    to=emp_card.get("employee_id"),
                    content="{}({})生日快乐!你的生日福利卡账号:{},密码:{}".format(emp_card.get("employee").get("name"),
                                                                   emp_card.get("employee").get("number"),
                                                                   emp_card.get("number"), emp_card.get("password")),
                    level=-3,
                    message_category="send_email_message"

                )
                CustomerUtil.call_open_api(
                    name="hcm.model.edit",
                    param={
                        'id_': emp_card.get('id'),
                        'info': {'state': 1},
                        'model': "emp_welfare_card"
                    }
                )
  • 无标签