优化质量检测(加工检测)及消息推送

This commit is contained in:
jinling.yang
2024-10-14 17:53:38 +08:00
parent d8bade64e1
commit 2a067778bc
18 changed files with 219 additions and 79 deletions

View File

@@ -11,7 +11,7 @@
""",
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify', 'stock'],
'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify', 'stock', 'sf_quality'],
'data': [
'data/bussiness_node.xml',
'data/cron_data.xml',

View File

@@ -1 +1 @@
from . import main
from . import main

View File

@@ -89,5 +89,10 @@
<field name="model">mrp.workorder</field>
</record>
<record id="bussiness_quality_cnc_test" model="jikimo.message.bussiness.node">
<field name="name">待质量判定</field>
<field name="model">quality.cnc.test</field>
</record>
</data>
</odoo>

View File

@@ -25,5 +25,18 @@
<field name="user_id" ref="base.user_root"/>
<field name="active" eval="True"/>
</record>
<record model="ir.cron" id="ir_cron_mrp_workorder_overdue_warning">
<field name="name">检查工单是否完成并恢复正常时效</field>
<field name="model_id" ref="model_mrp_workorder"/>
<field name="state">code</field>
<field name="code">model._recover_time_warning_func()</field>
<field name="interval_number">10</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="user_id" ref="base.user_root"/>
<field name="active" eval="True"/>
</record>
</data>
</odoo>

View File

@@ -227,5 +227,16 @@
<!--单号:组装任务单[{{name}}]({{request_url}})-->
<!--事项:{{use_tool_time}}前完成组装</field>-->
<!-- </record>-->
<record id="template_quality_cnc_test" model="jikimo.message.template">
<field name="name">待质量判定</field>
<field name="model_id" ref="sf_quality.model_quality_cnc_test"/>
<field name="model">quality.cnc.test</field>
<field name="bussiness_node_id" ref="bussiness_quality_cnc_test"/>
<field name="msgtype">markdown</field>
<field name="urgency">normal</field>
<field name="content">### 待质量判定提醒
事项:共有[{{judge_num}}]({{url}})个工单需判定质量结果</field>
</record>
</data>
</odoo>

View File

@@ -7,3 +7,4 @@ from . import sf_message_functional_tool_assembly
from . import sf_message_purchase
from . import sf_message_workorder
from . import sf_message_functional_tool_dismantle
from . import sf_message_quality_cnc_test

View File

@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
import logging
from datetime import datetime, timedelta
from odoo import models, fields, api, _
class SFMessageQualityCncTest(models.Model):
_name = 'quality.cnc.test'
_inherit = ['quality.cnc.test', 'jikimo.message.dispatch']
def create(self, vals_list):
res = super(SFMessageQualityCncTest, self).create(vals_list)
if res:
try:
logging.info('add_queue res:%s' % res)
res.add_queue('待质量判定')
except Exception as e:
logging.info('add_queue error:%s' % e)
return res
# 继承并重写jikimo.message.dispatch的_get_message()
def _get_message(self, message_queue_ids):
contents = []
url = self.env['ir.config_parameter'].get_param('web.base.url')
i = 0
for item in message_queue_ids:
if item.message_template_id.bussiness_node_id.name == '待质量判定':
content = item.message_template_id.content
i += 1
if i >= 1:
action_id = self.env.ref('sf_quality.action_quality_cnc_test').id
url_with_id = f"{url}/web#view_type=list&action={action_id}"
content_template = content.replace('{{judge_num}}', str(i))
content_template = content_template.replace('{{url}}', url_with_id)
contents.append(content_template)
return contents

View File

@@ -148,3 +148,8 @@ class SFMessageWork(models.Model):
args = [f'{item.routing_type}{overdue_message}']
# 获取add_queue方法并调用它传入参数列表
getattr(item, queue_method_name)(*args)
def _recover_time_warning_func(self):
workorder_done = self.env['mrp.workorder'].search([("state", "=", "done")])
workorder_overdue = workorder_done.filtered(lambda x: x.delivery_warning == 'overdue')
workorder_overdue.write({'delivery_warning': 'normal'})