Accept Merge Request #180: (feature/优化代码结构 -> develop)
Merge Request: 修复进度反馈问题与时区问题,优化界面问题(下发记录等只显示在cnc加工工单处)与opcua超时时长 Created By: @马广威 Accepted By: @马广威 URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/180?initial=true
This commit is contained in:
@@ -15,99 +15,148 @@ class StatusChange(models.Model):
|
||||
default_code = fields.Char(string='内部编码')
|
||||
|
||||
def action_confirm(self):
|
||||
# 在原有方法执行前记录日志和执行其他操作
|
||||
logging.info('函数已经执行=============')
|
||||
if self._get_forbidden_state_confirm() & set(self.mapped('state')):
|
||||
raise UserError(_(
|
||||
"It is not allowed to confirm an order in the following states: %s",
|
||||
", ".join(self._get_forbidden_state_confirm()),
|
||||
))
|
||||
logging.info('函数已经执行=============1')
|
||||
for order in self:
|
||||
if order.partner_id in order.message_partner_ids:
|
||||
logging.info('函数已经执行=============2')
|
||||
continue
|
||||
order.message_subscribe([order.partner_id.id])
|
||||
logging.info('函数已经执行=============3')
|
||||
self.write(self._prepare_confirmation_values())
|
||||
|
||||
# Context key 'default_name' is sometimes propagated up to here.
|
||||
# We don't need it and it creates issues in the creation of linked records.
|
||||
context = self._context.copy()
|
||||
context.pop('default_name', None)
|
||||
logging.info('函数已经执行=============4')
|
||||
self.with_context(context)._action_confirm()
|
||||
if self.env.user.has_group('sale.group_auto_done_setting'):
|
||||
logging.info('函数已经执行=============5')
|
||||
self.action_done()
|
||||
# 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_confirm'方法)
|
||||
res = super(StatusChange, self).action_confirm()
|
||||
|
||||
# 原有方法执行后,进行额外的操作(如调用外部API)
|
||||
process_start_time = str(datetime.now())
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
json1 = {
|
||||
'params': {
|
||||
'model_name': 'jikimo.process.order',
|
||||
'field_name': 'name',
|
||||
# 'default_code': 'PO-2022-1214-0022',
|
||||
'default_code': self.default_code,
|
||||
# 'default_code': self.name,
|
||||
'state': '加工中',
|
||||
'process_start_time': process_start_time,
|
||||
},
|
||||
}
|
||||
url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order'
|
||||
url1 = config['bfm_url'] + '/api/get/state/get_order'
|
||||
requests.post(url1, json=json1, data=None)
|
||||
logging.info('接口已经执行=============')
|
||||
|
||||
return True
|
||||
return res
|
||||
|
||||
def action_cancel(self):
|
||||
""" Cancel SO after showing the cancel wizard when needed. (cfr `_show_cancel_wizard`)
|
||||
|
||||
For post-cancel operations, please only override `_action_cancel`.
|
||||
|
||||
note: self.ensure_one() if the wizard is shown.
|
||||
"""
|
||||
# 在原有方法执行前记录日志和执行其他操作
|
||||
logging.info('函数已经执行=============')
|
||||
cancel_warning = self._show_cancel_wizard()
|
||||
|
||||
# 使用super()来调用原始方法(在本例中为'sale.order'模型的'action_cancel'方法)
|
||||
res = super(StatusChange, self).action_cancel()
|
||||
|
||||
# 原有方法执行后,进行额外的操作(如调用外部API)
|
||||
logging.info('函数已经执行=============2')
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
json1 = {
|
||||
'params': {
|
||||
'model_name': 'jikimo.process.order',
|
||||
'field_name': 'name',
|
||||
'default_code': self.default_code,
|
||||
# 'default_code': self.name,
|
||||
'state': '待派单',
|
||||
},
|
||||
}
|
||||
url1 = 'https://bfm.cs.jikimo.com/api/get/state/cancel_order'
|
||||
url1 = config['bfm_url'] + '/api/get/state/cancel_order'
|
||||
requests.post(url1, json=json1, data=None)
|
||||
if cancel_warning:
|
||||
logging.info('函数已经执行=============3')
|
||||
self.ensure_one()
|
||||
logging.info('函数已经执行=============4')
|
||||
template_id = self.env['ir.model.data']._xmlid_to_res_id(
|
||||
'sale.mail_template_sale_cancellation', raise_if_not_found=False
|
||||
)
|
||||
lang = self.env.context.get('lang')
|
||||
template = self.env['mail.template'].browse(template_id)
|
||||
if template.lang:
|
||||
lang = template._render_lang(self.ids)[self.id]
|
||||
ctx = {
|
||||
'default_use_template': bool(template_id),
|
||||
'default_template_id': template_id,
|
||||
'default_order_id': self.id,
|
||||
'mark_so_as_canceled': True,
|
||||
'default_email_layout_xmlid': "mail.mail_notification_layout_with_responsible_signature",
|
||||
'model_description': self.with_context(lang=lang).type_name,
|
||||
}
|
||||
return {
|
||||
'name': _('Cancel %s', self.type_name),
|
||||
'view_mode': 'form',
|
||||
'res_model': 'sale.order.cancel',
|
||||
'view_id': self.env.ref('sale.sale_order_cancel_view_form').id,
|
||||
'type': 'ir.actions.act_window',
|
||||
'context': ctx,
|
||||
'target': 'new'
|
||||
}
|
||||
else:
|
||||
return self._action_cancel()
|
||||
|
||||
return res
|
||||
|
||||
# def action_confirm(self):
|
||||
# logging.info('函数已经执行=============')
|
||||
# if self._get_forbidden_state_confirm() & set(self.mapped('state')):
|
||||
# raise UserError(_(
|
||||
# "It is not allowed to confirm an order in the following states: %s",
|
||||
# ", ".join(self._get_forbidden_state_confirm()),
|
||||
# ))
|
||||
# logging.info('函数已经执行=============1')
|
||||
# for order in self:
|
||||
# if order.partner_id in order.message_partner_ids:
|
||||
# logging.info('函数已经执行=============2')
|
||||
# continue
|
||||
# order.message_subscribe([order.partner_id.id])
|
||||
# logging.info('函数已经执行=============3')
|
||||
# self.write(self._prepare_confirmation_values())
|
||||
#
|
||||
# # Context key 'default_name' is sometimes propagated up to here.
|
||||
# # We don't need it and it creates issues in the creation of linked records.
|
||||
# context = self._context.copy()
|
||||
# context.pop('default_name', None)
|
||||
# logging.info('函数已经执行=============4')
|
||||
# self.with_context(context)._action_confirm()
|
||||
# if self.env.user.has_group('sale.group_auto_done_setting'):
|
||||
# logging.info('函数已经执行=============5')
|
||||
# self.action_done()
|
||||
# process_start_time = str(datetime.now())
|
||||
# json1 = {
|
||||
# 'params': {
|
||||
# 'model_name': 'jikimo.process.order',
|
||||
# 'field_name': 'name',
|
||||
# # 'default_code': 'PO-2022-1214-0022',
|
||||
# 'default_code': self.default_code,
|
||||
# # 'default_code': self.name,
|
||||
# 'state': '加工中',
|
||||
# 'process_start_time': process_start_time,
|
||||
# },
|
||||
# }
|
||||
# url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order'
|
||||
# requests.post(url1, json=json1, data=None)
|
||||
# logging.info('接口已经执行=============')
|
||||
#
|
||||
# return True
|
||||
|
||||
|
||||
# def action_cancel(self):
|
||||
# """ Cancel SO after showing the cancel wizard when needed. (cfr `_show_cancel_wizard`)
|
||||
#
|
||||
# For post-cancel operations, please only override `_action_cancel`.
|
||||
#
|
||||
# note: self.ensure_one() if the wizard is shown.
|
||||
# """
|
||||
# logging.info('函数已经执行=============')
|
||||
# cancel_warning = self._show_cancel_wizard()
|
||||
# logging.info('函数已经执行=============2')
|
||||
# json1 = {
|
||||
# 'params': {
|
||||
# 'model_name': 'jikimo.process.order',
|
||||
# 'field_name': 'name',
|
||||
# 'default_code': self.default_code,
|
||||
# # 'default_code': self.name,
|
||||
# 'state': '待派单',
|
||||
# },
|
||||
# }
|
||||
# url1 = 'https://bfm.cs.jikimo.com/api/get/state/cancel_order'
|
||||
# requests.post(url1, json=json1, data=None)
|
||||
# if cancel_warning:
|
||||
# logging.info('函数已经执行=============3')
|
||||
# self.ensure_one()
|
||||
# logging.info('函数已经执行=============4')
|
||||
# template_id = self.env['ir.model.data']._xmlid_to_res_id(
|
||||
# 'sale.mail_template_sale_cancellation', raise_if_not_found=False
|
||||
# )
|
||||
# lang = self.env.context.get('lang')
|
||||
# template = self.env['mail.template'].browse(template_id)
|
||||
# if template.lang:
|
||||
# lang = template._render_lang(self.ids)[self.id]
|
||||
# ctx = {
|
||||
# 'default_use_template': bool(template_id),
|
||||
# 'default_template_id': template_id,
|
||||
# 'default_order_id': self.id,
|
||||
# 'mark_so_as_canceled': True,
|
||||
# 'default_email_layout_xmlid': "mail.mail_notification_layout_with_responsible_signature",
|
||||
# 'model_description': self.with_context(lang=lang).type_name,
|
||||
# }
|
||||
# return {
|
||||
# 'name': _('Cancel %s', self.type_name),
|
||||
# 'view_mode': 'form',
|
||||
# 'res_model': 'sale.order.cancel',
|
||||
# 'view_id': self.env.ref('sale.sale_order_cancel_view_form').id,
|
||||
# 'type': 'ir.actions.act_window',
|
||||
# 'context': ctx,
|
||||
# 'target': 'new'
|
||||
# }
|
||||
# else:
|
||||
# return self._action_cancel()
|
||||
|
||||
|
||||
class FinishStatusChange(models.Model):
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
'views/machine_monitor.xml',
|
||||
'views/machine_info_present.xml',
|
||||
'views/delivery_record.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
|
||||
],
|
||||
'assets': {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from . import ftp_client
|
||||
from . import ftp_operate
|
||||
from . import py2opcua
|
||||
from . import res_config_setting
|
||||
|
||||
@@ -6,7 +6,7 @@ import json
|
||||
import hashlib
|
||||
import time
|
||||
import requests
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from odoo.http import request
|
||||
from odoo import fields, models, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
@@ -79,7 +79,7 @@ class FtpButton(models.Model):
|
||||
_logger.info("======%s下发成功======" % a.display_name)
|
||||
ftp.close_ftp()
|
||||
|
||||
up_time = str(datetime.now())
|
||||
up_time = str(datetime.now() + timedelta(hours=8))
|
||||
self.env['delivery.record'].create({
|
||||
'workorder_id': self.workorder_id.id,
|
||||
'delivery_type': '单个下发',
|
||||
@@ -364,7 +364,7 @@ class WorkCenterBarcode(models.Model):
|
||||
item.button_state = True
|
||||
ftp.close_ftp()
|
||||
# 增加一键下发记录
|
||||
up_time = str(datetime.now())
|
||||
up_time = str(datetime.now() + timedelta(hours=8))
|
||||
sequence_str = ','.join(sequence_collect)
|
||||
self.delivery_records.create({
|
||||
'delivery_type': '一键下发',
|
||||
@@ -451,7 +451,7 @@ class WorkCenterBarcode(models.Model):
|
||||
_logger.info("======%s一键合并下发成功======" % a.display_name)
|
||||
ftp.close_ftp()
|
||||
# 增加一键合并下发记录
|
||||
up_time = str(datetime.now())
|
||||
up_time = str(datetime.now() + timedelta(hours=8))
|
||||
sequence_str = ','.join(sequence_collect)
|
||||
self.delivery_records.create({
|
||||
'delivery_type': '一键合并下发',
|
||||
|
||||
@@ -7,7 +7,7 @@ class Py2opcua:
|
||||
"""
|
||||
|
||||
def __init__(self, url='opc.tcp://192.168.2.99:4840'):
|
||||
self.client = Client(url)
|
||||
self.client = Client(url, timeout=3600000)
|
||||
|
||||
# 连接客户端
|
||||
# def connect(self):
|
||||
|
||||
36
sf_machine_connect/models/res_config_setting.py
Normal file
36
sf_machine_connect/models/res_config_setting.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import logging
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ResBFMConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
bfm_url = fields.Selection(
|
||||
[("https://bfm.cs.jikimo.com", "开发环境(https://bfm.cs.jikimo.com)"),
|
||||
("https://bfm.r.jikimo.com", "测试环境(https://bfm.r.jikimo.com)"),
|
||||
# ("正式环境", "https://bfm.jikimo.com")], string='bfm环境', store=True)
|
||||
("https://bfm.jikimo.com", "正式环境(https://bfm.jikimo.com)")], string='bfm环境', store=True)
|
||||
|
||||
@api.model
|
||||
def get_values(self):
|
||||
"""
|
||||
重载获取参数的方法,参数都存在系统参数中
|
||||
:return:
|
||||
"""
|
||||
values = super(ResBFMConfigSettings, self).get_values()
|
||||
config = self.env['ir.config_parameter'].sudo()
|
||||
bfm_url = config.get_param('bfm_url', default='')
|
||||
|
||||
values.update(
|
||||
bfm_url=bfm_url,
|
||||
)
|
||||
return values
|
||||
|
||||
def set_values(self):
|
||||
super(ResBFMConfigSettings, self).set_values()
|
||||
ir_config = self.env['ir.config_parameter'].sudo()
|
||||
ir_config.set_param("bfm_url", self.bfm_url or "")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group//field[@name='processing_panel']" position="after">
|
||||
<!-- invisible="1" -->
|
||||
<field name="_barcode_scanned" widget="barcode_handler" string="扫码"/>
|
||||
<field name="_barcode_scanned" widget="barcode_handler" string="扫码" attrs='{"invisible": [("routing_type","!=","装夹")]}'/>
|
||||
</xpath>
|
||||
<xpath expr="//page//field[@name='tray_code']" position="replace">
|
||||
<field name="tray_code" widget="code"/>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[last()-3]" position="before">
|
||||
<!-- <page string="下发记录" attrs='{"invisible": [("routing_type","!=","CNC加工")]}'>-->
|
||||
<page string="下发记录">
|
||||
<page string="下发记录" attrs='{"invisible": [("routing_type","!=","CNC加工")]}'>
|
||||
<field name="delivery_records">
|
||||
<tree create="false">
|
||||
<field name="delivery_type"/>
|
||||
@@ -17,7 +17,6 @@
|
||||
</field>
|
||||
|
||||
|
||||
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
|
||||
29
sf_machine_connect/views/res_config_settings_views.xml
Normal file
29
sf_machine_connect/views/res_config_settings_views.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="res_config_settings_jd_view_form_inherit" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.jd.view.form.inherit.bpm</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('app_settings_block')]/div" position="before">
|
||||
<div>
|
||||
<h2>bfm环境配置</h2>
|
||||
<div class="row mt16 o_settings_container" id="jd_api">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<div class="text-muted">
|
||||
<label for="bfm_url"/>
|
||||
<field name="bfm_url"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user