工单异常处理

This commit is contained in:
胡尧
2024-10-15 15:14:16 +08:00
parent e2bd36ca16
commit ce5cb17e31
24 changed files with 403 additions and 36 deletions

View File

@@ -21,7 +21,7 @@ class MessageSfMrsConnect(Sf_Mrs_Connect):
_logger.info('已编程的制造订单:%s' % res.get('production_ids'))
productions = request.env['mrp.production'].sudo().search([('id', 'in', res.get('production_ids'))])
# 过滤programming_state为已编程,tool_state为2的制造订单
tool_state_valid_productions = productions.filtered(lambda x: x.programming_state == '已编程' and x.tool_state == '2')
tool_state_valid_productions = productions.filtered(lambda x: x.tool_state == '2')
if tool_state_valid_productions:
data = {
'name': tool_state_valid_productions[0].programming_no
@@ -39,3 +39,22 @@ class MessageSfMrsConnect(Sf_Mrs_Connect):
_logger.info('无效用刀异常消息推送接口:%s' % e)
return json.JSONEncoder().encode(res)
@http.route('/api/maintenance_logs/notify', type='json', auth='public', methods=['GET', 'POST'], csrf=False, cors="*")
def maintenance_logs_notify(self, **kw):
res = {'code': 200, 'message': '设备故障日志信息推送成功'}
datas = request.httprequest.data
ret = json.loads(datas)
log_id = ret.get('log_id')
if not log_id:
res = {'code': 400, 'message': '设备故障日志id不能为空'}
return json.JSONEncoder().encode(res)
try:
if not isinstance(log_id, list):
log_id = [log_id]
maintenance_logs = request.env['sf.maintenance.logs'].sudo().search([('id', 'in', [int(id) for id in log_id])])
if maintenance_logs:
maintenance_logs.add_queue('设备故障')
except Exception as e:
res = {'code': 400, 'message': '设备故障信息推送失败', 'error': str(e)}
return json.JSONEncoder().encode(res)

View File

@@ -94,5 +94,9 @@
<!-- <field name="name">表面工艺工单已逾期</field>-->
<!-- <field name="model">mrp.workorder</field>-->
<!-- </record>-->
<record id="bussiness_maintenance_logs" model="jikimo.message.bussiness.node">
<field name="name">设备故障</field>
<field name="model">sf.maintenance.logs</field>
</record>
</data>
</odoo>

View File

@@ -132,5 +132,16 @@
单号:发料出库单[{{name}}]({{request_url}})
事项:销售订单{{sale_order_name}}已全部产出并入库,请及时发货</field>
</record>
<record id="template_maintenance_logs" model="jikimo.message.template">
<field name="name">设备故障</field>
<field name="model_id" ref="sf_maintenance.model_sf_maintenance_logs"/>
<field name="model">sf.maintenance.logs</field>
<field name="bussiness_node_id" ref="bussiness_maintenance_logs"/>
<field name="msgtype">markdown</field>
<field name="urgency">urgent</field>
<field name="content">### 设备故障及异常提醒:
机台号:[{{maintenance_equipment_id.name}}]({{url}})
事项:{{create_date}}故障报警</field>
</record>
</data>
</odoo>

View File

@@ -8,3 +8,4 @@ from . import sf_message_purchase
from . import sf_message_workorder
from . import sf_message_functional_tool_dismantle
from . import sf_message_mrp_production
from . import sf_message_maintenance_logs

View File

@@ -0,0 +1,22 @@
from odoo import models, fields, api
class SFMessageMaintenanceLogs(models.Model):
_name = 'sf.maintenance.logs'
_inherit = ['sf.maintenance.logs', 'jikimo.message.dispatch']
@api._model_create_multi
def create(self, vals_list):
res = super(SFMessageMaintenanceLogs, self).create(vals_list)
for rec in res:
rec.add_queue()
return res
def _get_message(self, message_queue_ids):
contents = super(SFMessageMaintenanceLogs, self)._get_message(message_queue_ids)
url = self.env['ir.config_parameter'].get_param('web.base.url')
action_id = self.env.ref('sf_maintenance.action_maintenance_logs').id
for index, content in enumerate(contents):
maintenance_logs_id = self.env['sf.maintenance.logs'].browse(message_queue_ids[index].res_id)
url = url + '/web#id=%s&view_type=form&action=%s' % (maintenance_logs_id.id, action_id)
contents[index] = content.replace('{{url}}', url)
return contents

View File

@@ -14,4 +14,5 @@ class SfMessageTemplate(models.Model):
res.append('sf.functional.tool.dismantle')
res.append('purchase.order')
res.append('mrp.workorder')
res.append('sf.maintenance.logs')
return res