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"] |