Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop
# Conflicts: # sf_message/__manifest__.py
This commit is contained in:
@@ -1 +1,2 @@
|
||||
from . import models
|
||||
from . import models
|
||||
from . import controllers
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
'data': [
|
||||
'data/bussiness_node.xml',
|
||||
'data/cron_data.xml',
|
||||
'data/template_data.xml',
|
||||
|
||||
],
|
||||
'test': [
|
||||
],
|
||||
|
||||
1
sf_message/controllers/__init__.py
Normal file
1
sf_message/controllers/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import main
|
||||
40
sf_message/controllers/main.py
Normal file
40
sf_message/controllers/main.py
Normal file
@@ -0,0 +1,40 @@
|
||||
import json
|
||||
import requests
|
||||
import logging
|
||||
from odoo import http
|
||||
from odoo.http import request
|
||||
from odoo.addons.sf_mrs_connect.controllers.controllers import Sf_Mrs_Connect
|
||||
from odoo.addons.sf_base.commons.common import Common
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class MessageSfMrsConnect(Sf_Mrs_Connect):
|
||||
|
||||
@http.route('/api/cnc_processing/create', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
|
||||
cors="*")
|
||||
def get_cnc_processing_create(self, **kw):
|
||||
res = super(MessageSfMrsConnect, self).get_cnc_processing_create(**kw)
|
||||
res = json.loads(res)
|
||||
if res.get('production_ids'):
|
||||
try:
|
||||
_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')
|
||||
if tool_state_valid_productions:
|
||||
data = {
|
||||
'name': tool_state_valid_productions[0].programming_no
|
||||
}
|
||||
# 请求cloud接口,发送微信消息推送
|
||||
configsettings = request.env['res.config.settings'].sudo().get_values()
|
||||
config_header = Common.get_headers(self, configsettings['token'], configsettings['sf_secret_key'])
|
||||
url = '/api/message/invalid_tool_state'
|
||||
config_url = configsettings['sf_url'] + url
|
||||
data['token'] = configsettings['token']
|
||||
ret = requests.post(config_url, json=data, headers=config_header)
|
||||
ret = ret.json()
|
||||
_logger.info('无效用刀异常消息推送接口:%s' % ret)
|
||||
except Exception as e:
|
||||
_logger.info('无效用刀异常消息推送接口:%s' % e)
|
||||
return json.JSONEncoder().encode(res)
|
||||
|
||||
84
sf_message/data/template_data.xml
Normal file
84
sf_message/data/template_data.xml
Normal file
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" ?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="template_material_purchase_remind" model="jikimo.message.template">
|
||||
<field name="name">坯料采购提醒</field>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="bussiness_node_id" ref="bussiness_material_purchase_remind"/>
|
||||
<field name="msgtype">markdown</field>
|
||||
<field name="urgency">normal</field>
|
||||
<field name="content">### 坯料采购通知:
|
||||
单号:采购单[{{name}}]({{request_url}})
|
||||
事项:请确认坯料采购单并处理</field>
|
||||
</record>
|
||||
|
||||
<record id="template_material_picking_remind" model="jikimo.message.template">
|
||||
<field name="name">坯料发料提醒</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field name="model">stock.picking</field>
|
||||
<field name="bussiness_node_id" ref="bussiness_material_picking_remind"/>
|
||||
<field name="msgtype">markdown</field>
|
||||
<field name="urgency">normal</field>
|
||||
<field name="content">### 坯料发料提醒:
|
||||
单号:产品[{{product_id}}]({{request_url}})
|
||||
事项:共{{number}}个生产发料单待确认处理</field>
|
||||
</record>
|
||||
|
||||
<record id="template_mrp_workorder_remind" model="jikimo.message.template">
|
||||
<field name="name">工单已下发通知</field>
|
||||
<field name="model_id" ref="mrp_workorder.model_mrp_workorder"/>
|
||||
<field name="model">mrp.workorder</field>
|
||||
<field name="bussiness_node_id" ref="bussiness_mrp_workorder_remind"/>
|
||||
<field name="msgtype">markdown</field>
|
||||
<field name="urgency">normal</field>
|
||||
<field name="content">### 工单已下发通知:
|
||||
单号:产品[{{product_id}}]({{request_url}})
|
||||
事项:共{{number}}个工单已下发,请查收知悉</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record id="template_transfer_inventory_remind" model="jikimo.message.template">
|
||||
<field name="menu_id" ref="stock.menu_stock_root"/>
|
||||
<field name="action_id" ref="stock.action_picking_tree_ready"/>
|
||||
<field name="name">调拨入库</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field name="model">stock.picking</field>
|
||||
<field name="bussiness_node_id" ref="transfer_inventory"/>
|
||||
<field name="msgtype">markdown</field>
|
||||
<field name="urgency">normal</field>
|
||||
<field name="content">### 调拨入库通知:
|
||||
单号:调拨入库单[{{name}}]({{request_url}})
|
||||
事项:完成刀具物料上架入库</field>
|
||||
</record>
|
||||
|
||||
<record id="template_tool_expired_remind" model="jikimo.message.template">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_root"/>
|
||||
<field name="action_id" ref="sf_tool_management.sf_functional_tool_dismantle_view_act"/>
|
||||
<field name="name">功能刀具寿命到期</field>
|
||||
<field name="model_id" ref="sf_tool_management.model_sf_functional_tool_dismantle"/>
|
||||
<field name="model">sf.functional.tool.dismantle</field>
|
||||
<field name="bussiness_node_id" ref="tool_dismantle"/>
|
||||
<field name="msgtype">markdown</field>
|
||||
<field name="urgency">normal</field>
|
||||
<field name="content">### 功能刀具寿命到期提醒:
|
||||
单号:拆解单[{{code}}]({{request_url}})
|
||||
事项:{{functional_tool_id.tool_name_id.name}}寿命已到期,需拆解</field>
|
||||
</record>
|
||||
|
||||
<record id="template_tool_assembly_remind" model="jikimo.message.template">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_root"/>
|
||||
<field name="action_id" ref="sf_tool_management.sf_functional_tool_assembly_view_act"/>
|
||||
<field name="name">功能刀具组装</field>
|
||||
<field name="model_id" ref="sf_tool_management.model_sf_functional_tool_assembly"/>
|
||||
<field name="model">sf.functional.tool.assembly</field>
|
||||
<field name="bussiness_node_id" ref="tool_assembly"/>
|
||||
<field name="msgtype">markdown</field>
|
||||
<field name="urgency">normal</field>
|
||||
<field name="content">### 功能刀具组装通知:
|
||||
单号:组装任务单[{{name}}]({{request_url}})
|
||||
事项:{{use_tool_time}}前完成组装</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -6,4 +6,4 @@ from . import sf_message_cam_program
|
||||
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_functional_tool_dismantle
|
||||
|
||||
@@ -39,28 +39,6 @@ class SFMessageWork(models.Model):
|
||||
contents.append(content)
|
||||
return contents
|
||||
|
||||
@api.depends('cnc_ids.tool_state')
|
||||
def _compute_tool_state(self):
|
||||
# 将self的id与tool_state进行保存
|
||||
tool_state_dict = {record.id: record.tool_state for record in self}
|
||||
res = super(SFMessageWork, self)._compute_tool_state()
|
||||
data = {'name': []}
|
||||
for record in self:
|
||||
if tool_state_dict[record.id] != '2' and record.tool_state == '2':
|
||||
data['name'].append(record.production_id.programming_no)
|
||||
|
||||
if data['name']:
|
||||
# 请求cloud接口,发送微信消息推送
|
||||
configsettings = self.env['res.config.settings'].get_values()
|
||||
config_header = Common.get_headers(self, configsettings['token'], configsettings['sf_secret_key'])
|
||||
url = '/api/message/invalid_tool_state'
|
||||
config_url = configsettings['sf_url'] + url
|
||||
data['token'] = configsettings['token']
|
||||
ret = requests.post(config_url, json=data, headers=config_header)
|
||||
ret = ret.json()
|
||||
_logger.info('无效用刀异常消息推送接口:%s' % ret)
|
||||
return res
|
||||
|
||||
def request_url(self):
|
||||
we_config_info = self.env['we.config'].sudo().search([], limit=1)
|
||||
redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain
|
||||
|
||||
Reference in New Issue
Block a user