diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 708a9779..6d9bf88f 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -102,7 +102,7 @@ current [('state', '!=', 'cancel'),('schedule_state', '=', '已排')] {'search_default_product': 1, 'search_default_workcenter_id': - active_id,'search_default_filter_order_warning':1,'search_default_filter_order_overdue':1} + active_id,'search_default_filter_order_warning':1,'search_default_filter_order_overdue':1,'search_default_filter_order_normal':1}

@@ -125,9 +125,9 @@ mrp.workorder - - - + + + @@ -642,6 +642,7 @@ + diff --git a/sf_message/data/template_data.xml b/sf_message/data/template_data.xml index 8a01f5f1..beb37771 100644 --- a/sf_message/data/template_data.xml +++ b/sf_message/data/template_data.xml @@ -36,7 +36,7 @@ markdown normal ### 销售订单逾期预警 -事项:共有[{{warning_num}}]({{url}})个销售订单有逾期风险 +事项:[共有{{warning_num}}个销售订单有逾期风险]({{url}}) @@ -48,7 +48,7 @@ markdown urgent ### 销售订单已逾期提醒 -事项:共有[{{overdue_num}}]({{url}})个销售订单已逾期 +事项:[共有{{overdue_num}}个销售订单已逾期]({{url}}) @@ -97,7 +97,7 @@ timing normal ### 工单逾期预警 -事项:共有[{{warning_num}}]({{url}})个工单有逾期风险 +事项:[共有{{warning_num}}个工单有逾期风险]({{url}}) @@ -109,7 +109,7 @@ timing normal ### 工单已逾期提醒 -事项:共有[{{overdue_num}}]({{url}})个工单已逾期 +事项:[共有{{overdue_num}}个工单已逾期]({{url}}) @@ -121,7 +121,7 @@ timing normal ### 工单逾期预警 -事项:共有[{{warning_num}}]({{url}})个工单有逾期风险 +事项:[共有{{warning_num}}个工单有逾期风险]({{url}}) @@ -133,7 +133,7 @@ timing normal ### 工单已逾期提醒 -事项:共有[{{overdue_num}}]({{url}})个工单已逾期 +事项:[共有{{overdue_num}}个工单已逾期]({{url}}) @@ -145,7 +145,7 @@ timing normal ### 工单逾期预警 -事项:共有[{{warning_num}}]({{url}})个工单有逾期风险 +事项:[共有{{warning_num}}个工单有逾期风险]({{url}}) @@ -157,7 +157,7 @@ timing normal ### 工单已逾期提醒 -事项:共有[{{overdue_num}}]({{url}})个工单已逾期 +事项:[共有{{overdue_num}}个工单已逾期]({{url}}) @@ -169,7 +169,7 @@ timing normal ### 工单逾期预警 -事项:共有[{{warning_num}}]({{url}})个工单有逾期风险 +事项:[共有{{warning_num}}个工单有逾期风险]({{url}}) @@ -181,7 +181,7 @@ timing normal ### 工单已逾期提醒 -事项:共有[{{overdue_num}}]({{url}})个工单已逾期 +事项:[共有{{overdue_num}}个工单已逾期]({{url}}) @@ -262,7 +262,7 @@ markdown normal ### 待质量判定提醒 -事项:共有[{{judge_num}}]({{url}})个工单需判定质量结果 +事项:[共有{{judge_num}}个工单需判定质量结果]({{url}}) 设备故障 diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py index da4c32f6..f9932013 100644 --- a/sf_message/models/sf_message_sale.py +++ b/sf_message/models/sf_message_sale.py @@ -173,14 +173,15 @@ class SFMessageSale(models.Model): ("model", "=", self._name), ("bussiness_node_id", "=", business_node_id_warning) ], limit=1) - sale_order_warning = self.env['jikimo.message.queue'].search([ - ('res_id', '=', wo.id), - ('message_status', '=', 'pending'), - ('message_template_id', '=', message_template_warning.id) - ]) - if sale_order_warning: - logging.info('取消发送:%s' % sale_order_warning.name) - sale_order_warning.write({'message_status': 'cancel'}) + if message_template_warning: + sale_order_warning = self.env['jikimo.message.queue'].search([ + ('res_id', '=', wo.id), + ('message_status', '=', 'pending'), + ('message_template_id', '=', message_template_warning.id) + ]) + if sale_order_warning: + logging.info('取消发送:%s' % sale_order_warning.name) + sale_order_warning.write({'message_status': 'cancel'}) def _recover_sale_time_warning_func(self): sale_order_done = self.sudo().search([('state', 'in', ['sale']), ('delivery_status', '=', 'full')]) diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py index 1786a796..7549cffd 100644 --- a/sf_message/models/sf_message_workorder.py +++ b/sf_message/models/sf_message_workorder.py @@ -71,10 +71,22 @@ class SFMessageWork(models.Model): ('delivery_warning', '=', 'overdue')] record = self.sudo().search(search_condition + [('id', '=', int(message_queue_id.res_id))]) if record: + bussiness_node = item.bussiness_node_id.name + # 分割业务节点名称,提取出业务节点关键字 + business_node_key = bussiness_node.split('工单')[0].strip() + workcenter_mapping = { + '装夹预调': '工件装夹', + 'CNC加工': '自动产线', + '解除装夹': '工件拆卸', + '表面工艺': '表面工艺外协', + } + workcenter_name = workcenter_mapping.get(business_node_key, '表面工艺外协') + active_id = self.env['mrp.workcenter'].search([('name', 'ilike', workcenter_name)], + limit=1).id i += 1 if i >= 1: action_id = self.env.ref('sf_message.mrp_workorder_action_notify').id - url_with_id = f"{url}/web#view_type=list&action={action_id}" + url_with_id = f"{url}/web#view_type=list&action={action_id}&active_id={active_id}" content_template = content.replace('{{url}}', url_with_id) if bussiness_node in template_names['预警']: content = content_template.replace('{{warning_num}}', str(i)) @@ -160,6 +172,24 @@ class SFMessageWork(models.Model): args = [f'{item.routing_type}{overdue_message}'] # 获取add_queue方法并调用它,传入参数列表 getattr(item, queue_method_name)(*args) + if item.delivery_warning == 'overdue': + # 把消息队列中销售订单预警的状态改为取消发送 + key = f"{item.routing_type}_{'warning'}" + business_node_id_warning = business_node_ids.get(key, None) + if business_node_id_warning: + message_template_warning = self.env["jikimo.message.template"].search([ + ("model", "=", self._name), + ("bussiness_node_id", "=", business_node_id_warning) + ], limit=1) + if message_template_warning: + work_order_warning = self.env['jikimo.message.queue'].search([ + ('res_id', '=', item.id), + ('message_status', '=', 'pending'), + ('message_template_id', '=', message_template_warning.id) + ]) + if work_order_warning: + logging.info('取消发送:%s' % work_order_warning.name) + work_order_warning.write({'message_status': 'cancel'}) def _recover_time_warning_func(self): workorder_done = self.env['mrp.workorder'].search([("state", "in", ["done", "rework", "cancel"])])