diff --git a/sf_quality/models/quality.py b/sf_quality/models/quality.py
index 748d8bca..ee289415 100644
--- a/sf_quality/models/quality.py
+++ b/sf_quality/models/quality.py
@@ -1,34 +1,36 @@
import json
import requests
+import logging
from odoo import fields, models, api
from odoo.exceptions import ValidationError
+from datetime import datetime
from odoo.addons.sf_base.commons.common import Common
class QualityCheck(models.Model):
_inherit = "quality.check"
- _description = '零件特采'
# ==========零件特采接口==========
- def _register_tool_groups(self):
- create_url = '/AutoDeviceApi/PartSpecProc'
- sf_sync_config = self.env['res.config.settings'].get_values()
- token = sf_sync_config['token']
- sf_secret_key = sf_sync_config['sf_secret_key']
- headers = Common.get_headers(self, token, sf_secret_key)
- strurl = sf_sync_config['sf_url'] + create_url
- val = {
- 'RfidCode': None,
- }
- kw = json.dumps(val, ensure_ascii=False)
- r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
+ def _register_quality_check(self):
+ # create_url = '/AutoDeviceApi/PartSpecProc'
+ # sf_sync_config = self.env['res.config.settings'].get_values()
+ # token = sf_sync_config['token']
+ # sf_secret_key = sf_sync_config['sf_secret_key']
+ # headers = Common.get_headers(self, token, sf_secret_key)
+ headers = {'Authorization': 'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A'}
+ crea_url = "https://x24467i973.zicp.fun/AutoDeviceApi/PartSpecProc"
+ val = ['0037835872']
+ r = requests.post(crea_url, json=val, headers=headers)
ret = r.json()
- if r == 200:
+ logging.info('_register_quality_check:%s' % ret)
+ if ret['Succeed']:
return "零件特采发送成功"
else:
raise ValidationError("零件特采发送失败")
- # @api.onchange('quality_state')
- # def _onchange_quality_state(self):
- # if self.quality_state in ['pass', 'fail']:
- # self._register_tool_groups()
+ def do_fail(self):
+ self.write({
+ 'quality_state': 'fail',
+ 'user_id': self.env.user.id,
+ 'control_date': datetime.now()})
+ self._register_quality_check()
diff --git a/sf_tool_management/controllers/controllers.py b/sf_tool_management/controllers/controllers.py
index 84ef7664..0b003dc6 100644
--- a/sf_tool_management/controllers/controllers.py
+++ b/sf_tool_management/controllers/controllers.py
@@ -8,54 +8,6 @@ from odoo.http import request
class Manufacturing_Connect(http.Controller):
- # @http.route('/AutoDeviceApi/GetToolInfo', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
- # cors="*")
- # def get_equipment_tool_Info(self, **kw):
- # """
- # 机床刀库实时信息
- # :param kw:
- # :return:
- # """
- # logging.info('get_equipment_tool_Info:%s' % kw)
- # try:
- # datas = request.httprequest.data
- # ret = json.loads(datas)
- # ret = json.loads(ret.get('result'))
- # logging.info('DeviceId:%s' % ret)
- # equipment = request.env['maintenance.equipment'].sudo().search([('name', '=', ret['DeviceId'])])
- #
- # res = {'Succeed': True, 'Datas': []}
- # if equipment:
- # for item in equipment:
- # data = []
- # for equipment_tool_id in item.product_template_ids:
- # functional_tool_id = self.env['sf.functional.cutting.tool.entity'].sudo().search(
- # [('code', '=', equipment_tool_id.tool_code)])
- #
- # alarm_time = None
- # if functional_tool_id.functional_tool_status == '报警':
- # alarm_time = self.env['sf.functional.tool.warning'].sudo().search(
- # [('code', '=', equipment_tool_id.tool_code)]).alarm_time
- # equipment_tool = {
- # 'RfidCode': None,
- # 'ToolId': equipment_tool_id.code,
- # 'ToolName': equipment_tool_id.functional_tool_name_id.name,
- # 'MaxLife': equipment_tool_id.life_value_max,
- # 'UseLife': equipment_tool_id.used_value,
- # 'AddDatetime': equipment_tool_id.tool_install_time,
- # 'State': functional_tool_id.functional_tool_status,
- # 'WarnDate': alarm_time if alarm_time else False
- # }
- # data.append(equipment_tool)
- # res['Datas'].append({
- # 'DeviceId': item.name,
- # 'Data': data
- # })
- # except Exception as e:
- # res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
- # logging.info('get_equipment_tool_Info error:%s' % e)
- # return json.JSONEncoder().encode(res)
-
@http.route('/AutoDeviceApi/ToolGroup', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
cors="*")
def get_functional_tool_groups_Info(self, **kw):
diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index a4e374c6..8fad0b08 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -692,6 +692,15 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
names = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
return categories.browse(names)
+ @api.onchange('plan_execute_status')
+ def _onchange_plan_execute_status(self):
+ for record in self:
+ if record.plan_execute_status == '已完成':
+ self.env['sf.cnc.processing'].register_cnc_processing(record)
+
+ def knife_plan_cnc_processing(self):
+ self.env['sf.cnc.processing'].register_cnc_processing(self)
+
def apply_for_tooling(self):
"""
申请装刀
@@ -757,13 +766,12 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
if functional_tools:
for functional_tool in functional_tools:
if functional_tool.on_tool_stock_num == 0:
- # self.env['sf.cnc.processing'].register_cnc_processing(cnc_processing)
if functional_tool.tool_stock_num == 0 and functional_tool.side_shelf_num == 0:
status = True
else:
status = True
if status:
- self.env['sf.cam.work.order.program.knife.plan'].sudo().create({
+ knife_plan = self.env['sf.cam.work.order.program.knife.plan'].sudo().create({
'name': cnc_processing.workorder_id.production_id.name,
'cam_procedure_code': cnc_processing.program_name,
'filename': cnc_processing.cnc_id.name,
@@ -778,6 +786,8 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
'shank_model': cnc_processing.cutting_tool_handle_type,
'estimated_processing_time': cnc_processing.estimated_processing_time,
})
+ # 创建装刀请求
+ knife_plan.apply_for_tooling()
class FunctionalToolAssembly(models.Model):
diff --git a/sf_tool_management/models/maintenance_equipment.py b/sf_tool_management/models/maintenance_equipment.py
index 3c1eec9e..9f3cefba 100644
--- a/sf_tool_management/models/maintenance_equipment.py
+++ b/sf_tool_management/models/maintenance_equipment.py
@@ -1,5 +1,6 @@
import json
import requests
+import logging
from odoo import models, api, fields
from odoo.exceptions import ValidationError
from odoo.addons.sf_base.commons.common import Common
@@ -21,6 +22,10 @@ class SfMaintenanceEquipmentTool(models.Model):
used_value = fields.Integer('已使用值(min)', related='functional_tool_name_id.used_value')
tool_install_time = fields.Datetime('机内装刀时间')
+ # def write_tool(self, datas):
+ # if datas:
+ # print(datas)
+
@api.model_create_multi
def create(self, vals_list):
tools = super().create(vals_list)
@@ -38,23 +43,52 @@ class SfMaintenanceEquipment(models.Model):
# ==========机床当前刀库实时信息接口==========
def register_equipment_tool(self):
- sf_sync_config = self.env['res.config.settings'].get_values()
- token = sf_sync_config['token']
- sf_secret_key = sf_sync_config['sf_secret_key']
- headers = Common.get_headers(self, token, sf_secret_key)
- strurl = "https://x24467i973.zicp.fun/AutoDeviceApi/GetToolInfos"
- val = {
- "DeviceId": self.name
- }
- kw = json.dumps(val, ensure_ascii=False)
- r = requests.get(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
+ # sf_sync_config = self.env['res.config.settings'].get_values()
+ # token = sf_sync_config['token']
+ # sf_secret_key = sf_sync_config['sf_secret_key']
+ # headers = Common.get_headers(self, token, sf_secret_key)
+ headers = {'Authorization': 'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A'}
+ crea_url = "https://x24467i973.zicp.fun/AutoDeviceApi/GetToolInfos"
+ params = {"DeviceId": self.name}
+ r = requests.get(crea_url, params=params, headers=headers)
ret = r.json()
- print(ret)
- if r == 200:
+ logging.info('register_equipment_tool:%s' % ret)
+ datas = ret['Datas']
+ self.write_maintenance_equipment_tool(datas)
+ if ret['Succeed']:
return "机床当前刀库实时信息指令发送成功"
else:
raise ValidationError("机床当前刀库实时信息指令发送失败")
+ def write_maintenance_equipment_tool(self, datas):
+ if datas:
+ for data in datas:
+ maintenance_equipment_id = self.search([('name', '=', data['DeviceId'])])
+ if maintenance_equipment_id:
+ equipment_tool_id = self.env['maintenance.equipment.tool'].sudo().search(
+ [('equipment_id', '=', maintenance_equipment_id.id), ('code', '=', data['ToolId'])])
+ functional_tool_id = self.env['sf.functional.cutting.tool.entity'].sudo().search(
+ [('rfid', '=', data['RfidCode'])])
+ time = None
+ if data['AddDatetime']:
+ datatime = str(data['AddDatetime'])
+ time = fields.Datetime.from_string(datatime[0:10] + ' ' + datatime[11:19])
+ if equipment_tool_id and functional_tool_id:
+ tool_install_time = {'Nomal': '正常', 'Warning': '报警'}
+ equipment_tool_id.write({
+ 'functional_tool_name_id': functional_tool_id.id,
+ 'tool_install_time': time
+ })
+ functional_tool_id.write({
+ 'max_lifetime_value': data['MaxLife'],
+ 'used_value': data['UseLife'],
+ 'functional_tool_status': tool_install_time.get(data['State'])
+ })
+ else:
+ raise ValidationError('获取的【%s】设备不存在!!!' % data['DeviceId'])
+ else:
+ raise ValidationError('没有获取到刀具库信息!!!')
+
class StockLot(models.Model):
_inherit = 'stock.lot'
diff --git a/sf_tool_management/models/mrp_workorder.py b/sf_tool_management/models/mrp_workorder.py
index 9bb638e7..df9a341e 100644
--- a/sf_tool_management/models/mrp_workorder.py
+++ b/sf_tool_management/models/mrp_workorder.py
@@ -1,5 +1,6 @@
import json
import requests
+import logging
from odoo import fields, models, api
from odoo.exceptions import ValidationError
from odoo.addons.sf_base.commons.common import Common
@@ -10,21 +11,22 @@ class CNCprocessing(models.Model):
_description = 'CNC加工用刀检测'
# ==========MES装刀指令接口==========
- def register_cnc_processing(self, cnc_processing):
- sf_sync_config = self.env['res.config.settings'].get_values()
- token = sf_sync_config['token']
- sf_secret_key = sf_sync_config['sf_secret_key']
- headers = Common.get_headers(self, token, sf_secret_key)
+ def register_cnc_processing(self, knife_plan):
+ # sf_sync_config = self.env['res.config.settings'].get_values()
+ # token = sf_sync_config['token']
+ # sf_secret_key = sf_sync_config['sf_secret_key']
+ # headers = Common.get_headers(self, token, sf_secret_key)
+ headers = {'Authorization': 'Ba F2CF5DCC-1A00-4234-9E95-65603F70CC8A'}
strurl = "https://x24467i973.zicp.fun/AutoDeviceApi/ToolLoadInstruct"
val = {
- 'DeviceId': cnc_processing.workorder_id.machine_tool_name,
- 'RfidCode': None,
- 'ToolId': cnc_processing.cutting_tool_no
+ 'DeviceId': knife_plan.machine_table_name,
+ 'RfidCode': knife_plan.sf_functional_tool_assembly_id.rfid,
+ 'ToolId': int(knife_plan.cutter_spacing_code_id.code[1:])
}
- kw = json.dumps(val, ensure_ascii=False)
- r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
+ r = requests.post(strurl, json=val, headers=headers)
ret = r.json()
- if r == 200:
+ logging.info('register_cnc_processing:%s' % ret)
+ if ret['Succeed']:
return "MES装刀指令发送成功"
else:
raise ValidationError("MES装刀指令发送失败")
diff --git a/sf_tool_management/views/sf_maintenance_equipment.xml b/sf_tool_management/views/sf_maintenance_equipment.xml
index dbdafe1e..39a7d2c8 100644
--- a/sf_tool_management/views/sf_maintenance_equipment.xml
+++ b/sf_tool_management/views/sf_maintenance_equipment.xml
@@ -12,7 +12,7 @@
-
+
diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml
index 2d5cdf63..1a33c713 100644
--- a/sf_tool_management/views/tool_base_views.xml
+++ b/sf_tool_management/views/tool_base_views.xml
@@ -812,6 +812,8 @@
attrs="{'invisible': [('plan_execute_status', '!=', '0')]}" confirm="是否确认申请装刀"/>
+
@@ -827,7 +829,7 @@
-
+
@@ -1040,7 +1042,7 @@
-
+
diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py
index 9fe46616..66f38206 100644
--- a/sf_warehouse/models/model.py
+++ b/sf_warehouse/models/model.py
@@ -386,7 +386,7 @@ class ShelfLocation(models.Model):
record.product_id = False
record.location_status = '空闲'
- #调取获取货位信息接口
+ # 调取获取货位信息接口
def get_sf_shelf_location_info(self):
# sf_sync_config = self.env['res.config.settings'].get_values()
# token = sf_sync_config['token']
@@ -398,7 +398,7 @@ class ShelfLocation(models.Model):
# objs_all = self.env['maintenance.equipment'].search([('id', '=', self.id)])
# machine_tool_list = []
params = {'DeviceId': 'Cabinet-AL'}
- r = requests.get(crea_url, params=params,headers=headers)
+ r = requests.get(crea_url, params=params, headers=headers)
ret = r.json()
print(ret)
if ret['Succeed'] == True: