This commit is contained in:
pengyuthon
2026-03-04 15:35:26 +08:00
parent 06fa165e5a
commit dc9c0791b2
5 changed files with 29 additions and 44 deletions
+1
View File
@@ -67,6 +67,7 @@ class YuThonPhone(http.Controller):
employee_id = request.env['hr.employee'].sudo().search([('user_id.id', '=', kw.get('user_id'))]) employee_id = request.env['hr.employee'].sudo().search([('user_id.id', '=', kw.get('user_id'))])
data = { data = {
'name': employee_id.name, 'name': employee_id.name,
'employee_id': employee_id.id,
'company_id': employee_id.company_id.name, 'company_id': employee_id.company_id.name,
# 'image': employee_id.image_128, # 后面改成url # 'image': employee_id.image_128, # 后面改成url
'mobile_phone': employee_id.mobile_phone, 'mobile_phone': employee_id.mobile_phone,
+14 -14
View File
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<odoo> <odoo>
<data noupdate="1"> <data>
<record forcecreate="True" id="yuthon_catering_time" model="ir.cron"> <!-- <record forcecreate="True" id="yuthon_catering_time" model="ir.cron">-->
<field name="name">定时任务:餐饮收集任务</field> <!-- <field name="name">定时任务:餐饮收集任务</field>-->
<field name="model_id" ref="model_yuthon_catering"/> <!-- <field name="model_id" ref="model_yuthon_catering"/>-->
<field name="state">code</field> <!-- <field name="state">code</field>-->
<field name="code">model.catering_task()</field> <!-- <field name="code">model.catering_task()</field>-->
<field eval="True" name="active"/> <!-- <field eval="True" name="active"/>-->
<field name="user_id" ref="base.user_root"/> <!-- <field name="user_id" ref="base.user_root"/>-->
<field name="interval_number">1</field> <!-- <field name="interval_number">1</field>-->
<field name="interval_type">weeks</field> <!-- <field name="interval_type">weeks</field>-->
<field name="nextcall" eval="(DateTime.now()).strftime('%Y-%m-%d 00:00:00')"/> <!-- <field name="nextcall" eval="(DateTime.now()).strftime('%Y-%m-%d 00:00:00')"/>-->
<field name="numbercall">-1</field> <!-- <field name="numbercall">-1</field>-->
<field eval="False" name="doall"/> <!-- <field eval="False" name="doall"/>-->
</record> <!-- </record>-->
<record forcecreate="True" id="yuthon_task_catering_time" model="ir.cron"> <record forcecreate="True" id="yuthon_task_catering_time" model="ir.cron">
<field name="name">定时任务:餐饮通知</field> <field name="name">定时任务:餐饮通知</field>
<field name="model_id" ref="model_yuthon_catering"/> <field name="model_id" ref="model_yuthon_catering"/>
+12 -28
View File
@@ -26,30 +26,18 @@ class YuthonCatering(models.Model):
], default='unconfirmed', string='状态') ], default='unconfirmed', string='状态')
def task_catering(self): def task_catering(self):
current_date = fields.Date.today() employee_ids = self.env['yuthon.catering.conf'].search([])[0].employee_ids
is_work = self._process_shift_days(current_date) for emp in employee_ids:
if is_work: url = f"https://phone.thtzjt.com/phone/Restaurant/{emp.id}"
company_main = self.env["res.company"].search( self.sudo().env["wecom.apps"].sync_send_message_textcard(
[("name", "=", "集团本部")], category='can',
limit=1 user_id=emp.wecom_userid,
title="餐饮通知",
description="这是明天的餐饮,请及时确认",
url=url,
btntxt="详细信息"
) )
catering_conf = self.env["yuthon.catering.conf"].search(
[("company_id", "=", company_main.id)]
)
for conf in catering_conf:
for employee in conf.employee_ids:
emp_id = employee.id
url = f"https://phone.thtzjt.com/phone/Restaurant/{emp_id}"
if not employee.wecom_userid:
continue
self.sudo().env["wecom.apps"].sync_send_message_textcard(
category='can',
user_id=employee.wecom_userid,
title="餐饮通知",
description="这是明天的餐饮,请及时确认",
url=url,
btntxt="详细信息"
)
def task_conf(self): def task_conf(self):
tomorrow = fields.Date.today() + timedelta(days=1) tomorrow = fields.Date.today() + timedelta(days=1)
@@ -315,14 +303,10 @@ class YuthonCatering(models.Model):
target_url = f'https://phone.thtzjt.com/phone/Restaurant/{users_id}' target_url = f'https://phone.thtzjt.com/phone/Restaurant/{users_id}'
# 发送消息,使用指定的格式 # 发送消息,使用指定的格式
if hasattr(self.env["wecom.apps"], 'sync_send_message_textcard'): if hasattr(self.env["wecom.apps"], 'sync_send_message_textcard'):
# 构造消息内容
description = f"您有{len(data['records'])}条待办未处理,请及时登OA系统处理,谢谢配合" description = f"您有{len(data['records'])}条待办未处理,请及时登OA系统处理,谢谢配合"
# 设置消息标题
title = "餐饮登记提醒" title = "餐饮登记提醒"
# 调用企业微信API发送消息卡片
self.env["wecom.apps"].sync_send_message_textcard( self.env["wecom.apps"].sync_send_message_textcard(
category='oa', # 消息类别为OA category='can', # 消息类别为OA
# 获取员工的企业微信ID或登录名
user_id=employee.wecom_userid if hasattr(employee, 'wecom_userid') else employee.user_id.login if employee.user_id else '', user_id=employee.wecom_userid if hasattr(employee, 'wecom_userid') else employee.user_id.login if employee.user_id else '',
title=title, # 消息标题 title=title, # 消息标题
description=description, # 消息内容 description=description, # 消息内容
+1 -1
View File
@@ -9,7 +9,7 @@
<tree string="餐饮" editable="top"> <tree string="餐饮" editable="top">
<header> <header>
<button name="batch_remind_catering" string="批量提醒" type="object" class="btn btn-primary"/> <button name="batch_remind_catering" string="批量提醒" type="object" class="btn btn-primary"/>
<!-- <button name="test_1" string="test" type="object" class="btn btn-primary"/>--> <button name="task_catering" string="test" type="object" class="btn btn-primary"/>
</header> </header>
<field name="date"/> <field name="date"/>
<field name="state"/> <field name="state"/>
+1 -1
View File
@@ -162,7 +162,7 @@ class WeComApps(models.Model):
"btntxt": btntxt "btntxt": btntxt
}, },
} }
elif category in ['task', 'att_ok', 'salary']: elif category in ['task', 'att_ok', 'salary', 'can']:
data = { data = {
'touser': user_id, 'touser': user_id,
'msgtype': 'textcard', 'msgtype': 'textcard',