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"
}
) |