Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/刀具产品调取Cloud刀具标准库(10.11)

# Conflicts:
#	sf_mrs_connect/models/sync_common.py
This commit is contained in:
jinling.yang
2023-10-11 17:41:19 +08:00
11 changed files with 406 additions and 140 deletions

View File

@@ -67,7 +67,12 @@ class MrsMaterialModel(models.Model):
mf_materia_post = fields.Char("热处理后密度")
density = fields.Float("密度(kg/m³)")
materials_id = fields.Many2one('sf.production.materials', "材料名")
tensile_strength = fields.Float("拉伸强度(n/mm²)")
tensile_strength = fields.Char("拉伸强度(n/mm²)")
standards_id = fields.Many2one('sf.international.standards', '制造标准')
alloy_code = fields.Char('合金牌号')
price = fields.Float('单价/kg')
apply = fields.Many2many('material.apply', string='材料应用')
materials_code = fields.Char('材料代号')
hardness = fields.Float("硬度(hrc)")
rough_machining = fields.Float("粗加工Vc(m/min)")
finish_machining = fields.Float("精加工Vc(m/min)")
@@ -97,7 +102,7 @@ class MrsProductionProcess(models.Model):
_name = 'sf.production.process'
_description = '表面工艺'
process_encode = fields.Char("编码")
code = fields.Char("编码")
name = fields.Char('名称')
remark = fields.Text("备注")
processing_order_ids = fields.One2many('sf.processing.order', 'production_process_id', string='工序')
@@ -114,7 +119,7 @@ class MrsProcessingTechnology(models.Model):
name = fields.Char('名称', index=True)
remark = fields.Text('备注', index=True)
process_encode = fields.Char("编码")
code = fields.Char("编码")
processing_order_ids = fields.Many2many('sf.processing.order', 'sf_associated_processes',
index=True, string='工序')
active = fields.Boolean('有效', default=True)
@@ -173,3 +178,20 @@ class MrsProductionProcessParameter(models.Model):
for i in item.parameter_ids:
code_arr.append(i.code)
return code_arr
class ModelInternationalStandards(models.Model):
_name = 'sf.international.standards'
_description = '制造标准'
code = fields.Char('编码')
name = fields.Char('名称')
active = fields.Boolean('有效', default=True)
class MrsMaterialApply(models.Model):
_name = 'material.apply'
_description = '材料应用'
name = fields.Char('名称', default=True)
active = fields.Boolean('有效', default=True)

View File

@@ -24,6 +24,8 @@ access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,
access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional_fixture_type,base.group_user,1,1,1,1
access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,1
access_sf_sync_common,sf_sync_common,model_sf_sync_common,base.group_user,1,1,1,1
access_sf_international_standards,sf_international_standards,model_sf_international_standards,base.group_user,1,1,1,1
access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
24 access_sf_functional_fixture_type sf_functional_fixture_type model_sf_functional_fixture_type base.group_user 1 1 1 1
25 access_sf_functional_fixture sf_functional_fixture model_sf_functional_fixture base.group_user 1 1 1 1
26 access_sf_sync_common sf_sync_common model_sf_sync_common base.group_user 1 1 1 1
27 access_sf_international_standards sf_international_standards model_sf_international_standards base.group_user 1 1 1 1
28 access_material_apply material_apply model_material_apply base.group_user 1 1 1 1
29
30
31

View File

@@ -24,7 +24,7 @@
<field name="model">sf.processing.technology</field>
<field name="arch" type="xml">
<tree string="加工工艺" create="0" edit="0" delete="1">
<field name="process_encode"/>
<field name="code"/>
<field name="name"/>
</tree>
</field>
@@ -35,7 +35,7 @@
<field name="arch" type="xml">
<search>
<field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/>
<field name="process_encode" string="编码搜索" filter_domain="[('process_encode','ilike',self)]"/>
<field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
</search>
</field>
@@ -64,7 +64,7 @@
<page string="表面工艺">
<field name='production_process_ids' widget="ony2many">
<tree editable="bottom">
<field name="process_encode" string="编码号" readonly="1" force_save="1"/>
<field name="code" string="编码号" readonly="1" force_save="1"/>
<field name="name" string="名称" required="1"/>
<field name='category_id' default="default" invisible="1"/>
<field name="remark"/>
@@ -105,7 +105,7 @@
<field name="model">sf.production.process</field>
<field name="arch" type="xml">
<tree string="表面工艺" create="0" edit="0" delete="1">
<field name="process_encode"/>
<field name="code"/>
<field name="name" string="名称"/>
<field name="remark"/>
</tree>
@@ -124,7 +124,7 @@
</div>
<group>
<group>
<field name="process_encode"/>
<field name="code"/>
</group>
<notebook>
<page string="可选参数">
@@ -186,7 +186,7 @@
<field name="arch" type="xml">
<search>
<field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/>
<field name="process_encode" string="编码搜索" filter_domain="[('process_encode','ilike',self)]"/>
<field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
</search>
</field>
@@ -241,17 +241,20 @@
<record model="ir.ui.view" id="sf_materials_model_tree">
<field name="model">sf.materials.model</field>
<field name="arch" type="xml">
<tree string="材料型号" create="0" delete="1">
<field name="materials_no" readonly="1"/>
<field name="name" readonly="1"/>
<field name="gain_way"/>
<tree string="材料型号" delete="0">
<field name="materials_no"/>
<field name="materials_code"/>
<field name="name"/>
<field name="standards_id" optional="hide"/>
<field name="alloy_code"/>
<field name="tensile_strength"/>
<field name="hardness"/>
<field name="hardness" optional="show"/>
<field name="need_h"/>
<field name="density"/>
<field name="rough_machining"/>
<field name="finish_machining"/>
<field name="remark"/>
<field name="apply" widget="many2many_tags" optional="show"/>
<field name="density" optional="show"/>
<field name="rough_machining" optional="hide"/>
<field name="finish_machining" optional="hide"/>
<field name="remark" optional="hide"/>
<field name='materials_id' invisible="1"/>
</tree>
</field>

View File

@@ -36,6 +36,7 @@ class SfMaintenanceEquipment(models.Model):
num = "%04d" % m
return num
equipment_maintenance_standards_ids = fields.Many2many('equipment.maintenance.standards',
'sf_maintenance_equipment_ids', string='设备维保标准')
eq_maintenance_id = fields.Many2one('equipment.maintenance.standards', string='设备保养标准',

View File

@@ -73,105 +73,105 @@
<label for="workbench_L" string="工作台尺寸(mm)"/>
<div class="test_model">
<label for="workbench_L" string="长"/>
<field name="workbench_L" class="o_address_zip" required="1"
<field name="workbench_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="workbench_W" string="宽"/>
<field name="workbench_W" class="o_address_zip" required="1"
<field name="workbench_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<label for="machine_tool_L" string="机床尺寸(mm)"/>
<div class="test_model">
<label for="machine_tool_L" string="长"/>
<field name="machine_tool_L" class="o_address_zip" required="1"
<field name="machine_tool_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="machine_tool_W" string="宽"/>
<field name="machine_tool_W" class="o_address_zip" required="1"
<field name="machine_tool_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<label for="machine_tool_H" string="高"/>
<field name="machine_tool_H" class="o_address_zip" required="1"
<field name="machine_tool_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="feed_speed" required="1"/>
<field name="feed_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="precision_min" string="X轴定位精度(mm)"/>
<div class="test_model">
<label for="precision_min" string="最小(min)"/>
<field name="precision_min" class="o_address_zip" required="1"
<field name="precision_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="precision_max" string="最大(max)"/>
<field name="precision_max" class="o_address_zip" required="1"
<field name="precision_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="workpiece_load" required="1"/>
<field name="number_of_knife_library" required="1" options="{'format': false}"/>
<field name="lead_screw" required="1"/>
<field name="number_of_axles" required="1" widget="radio"
<field name="workpiece_load" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="number_of_knife_library" attrs="{'required': [('equipment_type', '=', '机床')]}" options="{'format': false}"/>
<field name="lead_screw" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}" widget="radio"
options="{'horizontal': true}"/>
<label for="x_axis" string="加工行程(mm)"
attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
<div class="test_model"
attrs="{'invisible': [('number_of_axles', '=', False)]}">
<label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_zip" required="1"
<field name="x_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip" required="1"
<field name="y_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" required="1"
<field name="z_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<br></br>
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_zip" required="1"
<field name="b_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="c_axis" class="o_address_zip" required="1"
<field name="c_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/>
</div>
</group>
<group string="主轴">
<field name="taper" required="1"/>
<field name="rotate_speed" string="主轴转速(r/min)" required="1"
<field name="taper" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="rotate_speed" string="主轴转速(r/min)" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<field name="heightened_way" required="1"/>
<field name="torque" required="1"/>
<field name="motor_power" required="1"/>
<field name="heightened_way" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="torque" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="motor_power" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model">
<label for="distance_min" string="最小min"/>
<field name="distance_min" class="o_address_zip" required="1"
<field name="distance_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="distance_max" string="最大max"/>
<field name="distance_max" class="o_address_zip" required="1"
<field name="distance_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="guide_rail" required="1"/>
<field name="guide_rail" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
<group string="刀具">
<field name="knife_type" required="1"/>
<field name="tool_speed" required="1"/>
<field name="tool_long_max" required="1"/>
<field name="knife_type" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_long_max" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="tool_diameter_min" string="刀具刀径(mm)"/>
<div class="test_model">
<label for="tool_diameter_min" string="最小(min)"/>
<field name="tool_diameter_min" class="o_address_zip" required="1"
<field name="tool_diameter_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="tool_diameter_max" string="最大(max)"/>
<field name="tool_diameter_max" class="o_address_zip" required="1"
<field name="tool_diameter_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="tool_quality_max" required="1"/>
<field name="tool_quality_max" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
</group>
@@ -184,54 +184,54 @@
<label for="AGV_L" string="设备尺寸(mm)"/>
<div class="test_model">
<label for="AGV_L" string="长"/>
<field name="AGV_L" class="o_address_zip" required="1"
<field name="AGV_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_W" string="宽"/>
<field name="AGV_W" class="o_address_zip" required="1"
<field name="AGV_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_H" string="高"/>
<field name="AGV_H" class="o_address_zip" required="1"
<field name="AGV_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<label for="AGV_goods_L" string="载货尺寸MAX(mm)"/>
<div class="test_model">
<label for="AGV_goods_L" string="长"/>
<field name="AGV_goods_L" class="o_address_zip" required="1"
<field name="AGV_goods_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_goods_W" string="宽"/>
<field name="AGV_goods_W" class="o_address_zip" required="1"
<field name="AGV_goods_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_goods_H" string="宽"/>
<field name="AGV_goods_H" class="o_address_zip" required="1"
<field name="AGV_goods_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<label for="AGV_velocity" string=""/>
<div class="test_model">
<div>
<label for="AGV_velocity" string="标准速度"/>
<field name="AGV_velocity" class="o_address_zip" required="1"
<field name="AGV_velocity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>m/S&amp;nbsp;</span>
</div>
<div>
<label for="AGV_velocity_min" string="标准速度(最小)"/>
<field name="AGV_velocity_min" class="o_address_zip" required="1"
<field name="AGV_velocity_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>m/S&amp;nbsp;</span>
</div>
<div>
<label for="AGV_velocity_max" string="标准速度(最大)"/>
<field name="AGV_velocity_max" class="o_address_zip" required="1"
<field name="AGV_velocity_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>m/S&amp;nbsp;</span>
</div>
<div>
<label for="AGV_Lifting_height" string="升降高度(max)"/>
<field name="AGV_Lifting_height" class="o_address_zip" required="1"
<field name="AGV_Lifting_height" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -242,26 +242,26 @@
<div>
<label for="AGV_ground_clearance" string="最小离地高度"/>
<field name="AGV_ground_clearance" class="o_address_zip" required="1"
<field name="AGV_ground_clearance" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="AGV_turning_radius" string="最小转弯半径"/>
<field name="AGV_turning_radius" class="o_address_zip" required="1"
<field name="AGV_turning_radius" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="AGV_gradeability_max" string="最大爬坡度"/>
<field name="AGV_gradeability_max" class="o_address_zip" required="1"
<field name="AGV_gradeability_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
</div>
<div>
<label for="AGV_parking_accuracy" string="停车精度"/>
<field name="AGV_parking_accuracy" class="o_address_zip" required="1"
<field name="AGV_parking_accuracy" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -275,14 +275,14 @@
<div>
<label for="AGV_load_weight_max" string="最大负载重量"/>
<field name="AGV_load_weight_max" class="o_address_zip" required="1"
<field name="AGV_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="AGV_weight" string="本体总重量"/>
<field name="AGV_weight" class="o_address_zip" required="1"
<field name="AGV_weight" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
@@ -290,7 +290,7 @@
<div>
<label for="AGV_job_duration" string="连续作业时长"/>
<field name="AGV_job_duration" class="o_address_zip" required="1"
<field name="AGV_job_duration" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>h&amp;nbsp;</span>
</div>
@@ -298,7 +298,7 @@
<div>
<label for="AGV_transfer_mode" string="移载方式"/>
<field name="AGV_transfer_mode" class="o_address_zip" required="1"
<field name="AGV_transfer_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
@@ -326,7 +326,7 @@
<div>
<label for="AGV_drive_motor_power" string="驱动电机功率"/>
<field name="AGV_drive_motor_power" class="o_address_zip" required="1"
<field name="AGV_drive_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
@@ -334,7 +334,7 @@
<div>
<label for="AGV_hoist_motor_power" string="提升电机功率"/>
<field name="AGV_hoist_motor_power" class="o_address_zip" required="1"
<field name="AGV_hoist_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>i&amp;nbsp;</span>
</div>
@@ -342,7 +342,7 @@
<div>
<label for="AGV_drive_motor_speed_ratio" string="驱动电机速比"/>
<field name="AGV_drive_motor_speed_ratio" class="o_address_zip" required="1"
<field name="AGV_drive_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
@@ -354,14 +354,14 @@
<div>
<label for="AGV_veer_motor_power" string="转向电机功率"/>
<field name="AGV_veer_motor_power" class="o_address_zip" required="1"
<field name="AGV_veer_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
<div>
<label for="AGV_veer_motor_speed_ratio" string="转向电机速比"/>
<field name="AGV_veer_motor_speed_ratio" class="o_address_zip" required="1"
<field name="AGV_veer_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>i&amp;nbsp;</span>
</div>
@@ -369,7 +369,7 @@
<div>
<label for="AGV_move_motor_power" string="前移电机功率"/>
<field name="AGV_move_motor_power" class="o_address_zip" required="1"
<field name="AGV_move_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
@@ -377,7 +377,7 @@
<div>
<label for="AGV_move_motor_speed_ratio" string="前移电机速比"/>
<field name="AGV_move_motor_speed_ratio" class="o_address_zip" required="1"
<field name="AGV_move_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>i&amp;nbsp;</span>
</div>
@@ -393,27 +393,27 @@
<div>
<label for="AGV_drive_mode" string="驱动方式"/>
<field name="AGV_drive_mode" class="o_address_zip" required="1"
<field name="AGV_drive_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<label for="AGV_navigation_mode" string="导航方式"/>
<field name="AGV_navigation_mode" class="o_address_zip" required="1"
<field name="AGV_navigation_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<div>
<label for="AGV_communication_mode" string="通讯方式"/>
<field name="AGV_communication_mode" class="o_address_zip" required="1"
<field name="AGV_communication_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<div>
<label for="AGV_direction_travel" string="行走方向"/>
<field name="AGV_direction_travel" class="o_address_zip" required="1"
<field name="AGV_direction_travel" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
@@ -426,19 +426,19 @@
<label for="AGV_power_requirements" string="电源要求"/>
<field name="AGV_power_requirements" class="o_address_zip" required="1"
<field name="AGV_power_requirements" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<label for="AGV_charge_mode" string="充电方式"/>
<field name="AGV_charge_mode" class="o_address_zip" required="1"
<field name="AGV_charge_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<label for="AGV_security" string="安全防护"/>
<field name="AGV_security" class="o_address_zip" required="1"
<field name="AGV_security" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
@@ -448,14 +448,14 @@
<label for="AGV_operating_temperature" string="环境温度"/>
<field name="AGV_operating_temperature" class="o_address_zip" required="1"
<field name="AGV_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
<label for="AGV_operating_humidity" string="环境湿度"/>
<field name="AGV_operating_humidity" class="o_address_zip" required="1"
<field name="AGV_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
@@ -470,15 +470,15 @@
<label for="robot_gripping_of_workpieces_L" string="抓取工件最大尺寸"/>
<div class="test_model">
<label for="robot_gripping_of_workpieces_L" string="长"/>
<field name="robot_gripping_of_workpieces_L" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_gripping_of_workpieces_W" string="宽"/>
<field name="robot_gripping_of_workpieces_W" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_gripping_of_workpieces_H" string="高"/>
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -487,25 +487,25 @@
<div class="test_model">
<div>
<label for="robot_radius_of_the_boom" string="展臂半径"/>
<field name="robot_radius_of_the_boom" class="o_address_zip" required="1"
<field name="robot_radius_of_the_boom" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="robot_load_weight_max" string="最大负载重量"/>
<field name="robot_load_weight_max" class="o_address_zip" required="1"
<field name="robot_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="robot_gripping_of_workpieces_H" string="本体总重量"/>
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="robot_repeatable_positioning_accuracy" string="重复定位精度"/>
<field name="robot_repeatable_positioning_accuracy" class="o_address_zip" required="1"
<field name="robot_repeatable_positioning_accuracy" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -526,15 +526,15 @@
<label for="robot_track_dimensions_L" string="轨道尺寸"/>
<div class="test_model">
<label for="robot_track_dimensions_L" string="长"/>
<field name="robot_track_dimensions_L" class="o_address_zip" required="1"
<field name="robot_track_dimensions_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_track_dimensions_W" string="宽"/>
<field name="robot_track_dimensions_W" class="o_address_zip" required="1"
<field name="robot_track_dimensions_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_track_dimensions_H" string="高"/>
<field name="robot_track_dimensions_H" class="o_address_zip" required="1"
<field name="robot_track_dimensions_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -545,22 +545,22 @@
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="robot_drive_mode" string="驱动方式"/>
<field name="robot_drive_mode" class="o_address_zip" required="1"
<field name="robot_drive_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="robot_installation_method" string="安装方式"/>
<field name="robot_installation_method" class="o_address_zip" required="1"
<field name="robot_installation_method" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<label for="robot_operating_temperature" string="工作条件"/>
<div class="test_model">
<label for="robot_operating_temperature" string="环境温度"/>
<field name="robot_operating_temperature" class="o_address_zip" required="1"
<field name="robot_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
<label for="robot_operating_humidity" string="环境湿度"/>
<field name="robot_operating_humidity" class="o_address_zip" required="1"
<field name="robot_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
@@ -575,30 +575,30 @@
<label for="detect_L" string="设备尺寸(mm)"/>
<div class="test_model">
<label for="detect_L" string="长"/>
<field name="detect_L" class="o_address_zip" required="1"
<field name="detect_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_W" string="宽"/>
<field name="detect_W" class="o_address_zip" required="1"
<field name="detect_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_H" string="高"/>
<field name="detect_H" class="o_address_zip" required="1"
<field name="detect_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<label for="detect_x_axis" string="测量范围(max)"/>
<div class="test_model">
<label for="detect_x_axis" string="X轴"/>
<field name="detect_x_axis" class="o_address_zip" required="1"
<field name="detect_x_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_y_axis" string="Y轴"/>
<field name="detect_y_axis" class="o_address_zip" required="1"
<field name="detect_y_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_z_axis" string="Z轴"/>
<field name="detect_z_axis" class="o_address_zip" required="1"
<field name="detect_z_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -606,19 +606,19 @@
<div class="test_model">
<div>
<label for="detect_precision" string="测量精度"/>
<field name="detect_precision" class="o_address_zip" required="1"
<field name="detect_precision" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>μm&amp;nbsp;</span>
</div>
<div>
<label for="detect_measurement_mode" string="测量方式"/>
<field name="detect_measurement_mode" class="o_address_zip" required="1"
<field name="detect_measurement_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_resolution" string="分辨率"/>
<field name="detect_resolution" class="o_address_zip" required="1"
<field name="detect_resolution" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
@@ -627,19 +627,19 @@
<div class="test_model">
<div>
<label for="detect_load_weight_max" string="最大负载重量"/>
<field name="detect_load_weight_max" class="o_address_zip" required="1"
<field name="detect_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="detect_weight" string="本体总重量"/>
<field name="detect_weight" class="o_address_zip" required="1"
<field name="detect_weight" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="detect_measurement_length" string="深孔测量长度(max)"/>
<field name="detect_measurement_length" class="o_address_zip" required="1"
<field name="detect_measurement_length" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -656,13 +656,13 @@
</div>
<div>
<label for="detect_control_mode" string="控制方式"/>
<field name="detect_control_mode" class="o_address_zip" required="1"
<field name="detect_control_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_balance_mode_for_Z" string="Z轴平衡方式"/>
<field name="detect_balance_mode_for_Z" class="o_address_zip" required="1"
<field name="detect_balance_mode_for_Z" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
@@ -671,19 +671,19 @@
<div class="test_model">
<div>
<label for="detect_zoom_objective_magnification" string="变焦物镜倍率"/>
<field name="detect_zoom_objective_magnification" class="o_address_zip" required="1"
<field name="detect_zoom_objective_magnification" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_magnification" string="放大倍率"/>
<field name="detect_magnification" class="o_address_zip" required="1"
<field name="detect_magnification" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_working_distance" string="工作距离"/>
<field name="detect_working_distance" class="o_address_zip" required="1"
<field name="detect_working_distance" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -692,23 +692,23 @@
<div class="test_model">
<div>
<label for="detect_locking_mode" string="锁紧方式"/>
<field name="detect_locking_mode" class="o_address_zip" required="1"
<field name="detect_locking_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_pressurized_air" string="压缩空气"/>
<field name="detect_pressurized_air" class="o_address_zip" required="1"
<field name="detect_pressurized_air" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_object_field_of_view_max" string="物方视场:"/>
<span>最小&amp;nbsp;</span>
<field name="detect_object_field_of_view_max" class="o_address_zip" required="1"
<field name="detect_object_field_of_view_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm~&amp;nbsp;</span>
<field name="detect_object_field_of_view_min" class="o_address_zip" required="1"
<field name="detect_object_field_of_view_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -717,19 +717,19 @@
<div class="test_model">
<div>
<label for="detect_operating_temperature" string="环境温度"/>
<field name="detect_operating_temperature" class="o_address_zip" required="1"
<field name="detect_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
</div>
<div>
<label for="detect_operating_humidity" string="环境湿度"/>
<field name="detect_operating_humidity" class="o_address_zip" required="1"
<field name="detect_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
</div>
<div>
<label for="detect_power_requirements" string="电源要求"/>
<field name="detect_power_requirements" class="o_address_zip" required="1"
<field name="detect_power_requirements" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
@@ -737,7 +737,7 @@
</group>
</page>
<page string="加工能力">
<page string="加工能力" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<field name='image_id' widget="custom_many2many_checkboxes">

View File

@@ -23,6 +23,7 @@
'views/mrp_workorder_view.xml',
'views/tool_other_features_view.xml',
'views/model_type_view.xml',
'views/sf_maintenance_equipment.xml',
# 'views/kanban_change.xml'
],

View File

@@ -861,3 +861,43 @@ class ResMrpBomMo(models.Model):
raw_bom = self.env['product.product'].search(
[('categ_id.type', '=', '原材料'), ('materials_type_id', '=', product.materials_type_id.id)])
return raw_bom
class SfMaintenanceEquipmentAndProductTemplate(models.Model):
_inherit = 'maintenance.equipment'
_description = '设备'
product_template_ids = fields.One2many('maintenance.equipment.tool', 'equipment_id', string='机床刀位')
@api.model_create_multi
def create(self, vals_list):
vals = []
for value in vals_list:
res = super(SfMaintenanceEquipmentAndProductTemplate, self).create(value)
number = value.get('number_of_knife_library')
for i in range(1, number + 1):
self.env['maintenance.equipment.tool'].create({
'equipment_id': res.id,
'code': 'T' + str(i)
})
vals.append(res)
return vals[0]
class SfMaintenanceEquipmentTool(models.Model):
_name = 'maintenance.equipment.tool'
_description = '机床刀位'
equipment_id = fields.Many2one('maintenance.equipment', string='设备')
product_template_id = fields.Many2one('product.template', string='功能刀具名称', domain="[('categ_type', '=', '刀具')]")
image_1920 = fields.Binary('图片', related='product_template_id.image_1920')
categ_type = fields.Char(string='功能刀具类型')
diameter = fields.Char('直径')
precision = fields.Char('\\')
tool_code = fields.Char('功能刀具编码')
hilt_name = fields.Char('刀柄名称')
hilt_code = fields.Char('刀柄编码')
life_value_max = fields.Char('最大寿命值')
alarm_value = fields.Char('报警值')
used_value = fields.Char('已使用值')
code = fields.Char('机床刀位号')

View File

@@ -14,5 +14,6 @@ access_sf_cutting_direction,sf_cutting_direction,model_sf_cutting_direction,base
access_sf_suitable_coolant,sf_suitable_coolant,model_sf_suitable_coolant,base.group_user,1,1,1,1
access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,1,1,1,1
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,1
access_maintenance_equipment_tool,maintenance_equipment_tool,model_maintenance_equipment_tool,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
14 access_sf_feed_per_tooth sf_feed_per_tooth model_sf_feed_per_tooth base.group_user 1 1 1 1
15 access_maintenance_equipment_tool maintenance_equipment_tool model_maintenance_equipment_tool base.group_user 1 1 1 1
16
17
18
19

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- 设备新增生产线-->
<record id="sf_hr_equipment_view_form_manufacturing" model="ir.ui.view">
<field name="name">sf_equipment.form</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="sf_maintenance.sf_hr_equipment_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='brand_id']" position="after">
<field name="production_line_id"/>
</xpath>
</field>
</record>
<!-- 故障日志增加产线对象-->
<record id="sf_view_maintenance_logs_tree" model="ir.ui.view">
<field name="name">sf.maintenance.logs.tree</field>
<field name="model">sf.maintenance.logs</field>
<field name="inherit_id" ref="sf_maintenance.view_maintenance_logs_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='code']" position="after">
<field name="production_line_id"/>
</xpath>
</field>
</record>
<!-- 设备增加刀具库位table-->
<record id="sf_manufacturing_hr_equipment_view_form" model="ir.ui.view">
<field name="name">sf_manufacturing_equipment.form</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="sf_maintenance.sf_hr_equipment_view_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='sf_equipment']" position="after">
<page string="标准刀库" name="sf_equipment_product_template"
attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<field name = 'product_template_ids' >
<tree editable='bottom'>
<field name="code"/>
<field name="product_template_id"/>
<field name="image_1920" widget="image"/>
<field name="categ_type"/>
<field name="diameter"/>
<field name="precision"/>
<field name="tool_code"/>
<field name="hilt_name"/>
<field name="hilt_code"/>
<field name="life_value_max"/>
<field name="alarm_value"/>
<field name="used_value"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>

View File

@@ -21,6 +21,10 @@ class ResConfigSettings(models.TransientModel):
def sf_all_sync(self):
try:
self.env['sf.international.standards'].sync_all_mrs_international_standards()
_logger.info("同步资源库国际标准完成")
self.env['material.apply'].sync_all_material_apply()
_logger.info("同步资源库材料应用完成")
self.env['sf.production.materials'].sync_all_production_materials()
_logger.info("同步资源库材料")
self.env['sf.materials.model'].sync_all_materials_model()
@@ -29,8 +33,8 @@ class ResConfigSettings(models.TransientModel):
_logger.info("同步资源库表面工艺类别")
self.env['sf.production.process'].sync_all_production_process()
_logger.info("同步资源库表面工艺")
self.env['sf.processing.technology'].sync_all_processing_technology()
_logger.info("同步资源库加工工艺")
# self.env['sf.processing.technology'].sync_all_processing_technology()
# _logger.info("同步资源库加工工艺")
self.env['sf.machine.brand.tags'].sync_all_machine_brand_tags()
_logger.info("同步资源库品牌类别")
self.env['sf.machine.brand'].sync_all_machine_brand()
@@ -44,7 +48,10 @@ class ResConfigSettings(models.TransientModel):
self.env['sf.cutting.tool.material'].sync_all_cutting_tool_material()
_logger.info("同步刀具类型")
self.env['sf.cutting.tool.type'].sync_all_tool_type()
_logger.info("同步功能刀具类型")
_logger.info("同步所有刀具类型完成")
# _logger.info("同步所有刀具型号...")
# self.env['sf.cutting.tool.model'].sync_all_tool_model()
_logger.info("同步所有刀具型号完成")
self.env['sf.functional.cutting.tool.model'].sync_all_functional_cutting_tool_model()
_logger.info("同步夹具物料")
self.env['sf.fixture.material'].sync_all_fixture_material()
@@ -53,9 +60,12 @@ class ResConfigSettings(models.TransientModel):
_logger.info("同步夹具型号")
self.env['sf.fixture.model'].sync_all_fixture_model()
_logger.info("同步功能夹具类型")
# self.env['sf.functional.fixture'].sync_all_functional_fixture()
self.env['sf.functional.fixture.type'].sync_all_functional_fixture_type()
_logger.info("同步资源库机床型号")
self.env['sf.machine_tool.type'].sync_all_machine_tool_type()
_logger.info("同步资源库机床型号完成")
except Exception as e:
_logger.info("捕获错误信息:%s" % e)
raise ValidationError("数据错误导致同步失败,请联系管理员")

View File

@@ -207,10 +207,19 @@ class sfMaterialModel(models.Model):
"hardness": item['hardness'],
"rough_machining": item['rough_machining'],
"finish_machining": item['finish_machining'],
"materials_id": materials.id,
"materials_id": self.env['sf.production.materials'].search(
[("materials_no", '=', item['materials_id.materials_no'])]).id,
"standards_id": self.env['sf.international.standards'].search(
[("name", '=', item['standards_id'])]).id,
"need_h": item['need_h'],
"alloy_code": item['alloy_code'],
"mf_materia_post": item['mf_materia_post'],
"density": item['density'],
"materials_code": item['materials_code'],
"apply": self.env['material.apply'].search(
[("name", 'in', item['apply'])]).ids
# "tag_ids": item['tag_ids']
})
else:
materials_model.name = item['name']
@@ -306,7 +315,17 @@ class sfProductionProcess(models.Model):
if result['status'] == 1:
for item in result['production_process_yesterday_list']:
if item:
production_process = self.search([("process_encode", '=', item['code'])])
brand = self.env['sf.production.process'].search(
[("code", '=', item['code'])])
if brand:
brand.name = item['name'],
brand.category_id = self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])]).id,
brand.code = item['code'],
brand.remark = item['remark'],
brand.active = item['active'],
brand.remark = item['remark']
production_process = self.search([("code", '=', item['code'])])
category = self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])])
if production_process:
@@ -317,8 +336,9 @@ class sfProductionProcess(models.Model):
else:
self.create({
"name": item['name'],
"category_id": category.id,
"process_encode": item['code'],
"category_id": self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])]).id,
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
@@ -338,14 +358,14 @@ class sfProductionProcess(models.Model):
if result['status'] == 1:
for item in result['production_process_all_list']:
if item:
production_process = self.search([("process_encode", '=', item['code'])])
production_process = self.search([("code", '=', item['code'])])
category = self.env['sf.production.process.category'].search(
[("code", '=', item['category_code'])])
if not production_process:
self.create({
"name": item['name'],
"category_id": category.id,
"process_encode": item['code'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
@@ -358,6 +378,7 @@ class sfProductionProcess(models.Model):
raise ValidationError("表面工艺认证未通过")
class sfProcessingTechnology(models.Model):
_inherit = 'sf.processing.technology'
_description = '加工工艺'
@@ -376,7 +397,7 @@ class sfProcessingTechnology(models.Model):
if result['status'] == 1:
for item in result['processing_technology_yesterday_list']:
if item:
processing_technology = self.search([("process_encode", '=', item['process_encode'])])
processing_technology = self.search([("code", '=', item['code'])])
if processing_technology:
processing_technology.name = item['name']
processing_technology.remark = item['remark']
@@ -384,7 +405,7 @@ class sfProcessingTechnology(models.Model):
else:
self.create({
"name": item['name'],
"process_encode": item['process_encode'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
@@ -404,11 +425,11 @@ class sfProcessingTechnology(models.Model):
if result['status'] == 1:
for item in result['processing_technology_all_list']:
if item:
processing_technology = self.search([("process_encode", '=', item['process_encode'])])
processing_technology = self.search([("code", '=', item['code'])])
if not processing_technology:
self.create({
"name": item['name'],
"process_encode": item['process_encode'],
"code": item['code'],
"remark": item['remark'],
"active": item['active'],
})
@@ -884,7 +905,7 @@ class sfProductionProcessParameter(models.Model):
_description = '表面工艺可选参数'
url = '/api/production_process_parameter/list'
# 定时同步每日表面工艺
# 定时同步每日表面工艺可选参数
def sync_production_process_parameter_yesterday(self):
sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token']
@@ -899,7 +920,7 @@ class sfProductionProcessParameter(models.Model):
if item:
production_process_parameter = self.search([("code", '=', item['code'])])
process = self.env['sf.production.process'].search(
[('process_encode', '=', item['process_id_code'])])
[('code', '=', item['process_id_code'])])
if production_process_parameter:
production_process_parameter.name = item['name']
production_process_parameter.active = item['active']
@@ -918,7 +939,7 @@ class sfProductionProcessParameter(models.Model):
else:
raise ValidationError("表面工艺可选参数认证未通过") # 定时同步表面工艺
# 同步所有表面工艺
# 同步所有表面工艺可选参数
def sync_all_production_process_parameter(self):
sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token']
@@ -934,7 +955,7 @@ class sfProductionProcessParameter(models.Model):
production_process_parameter = self.search(
[("code", '=', item['code'])])
process = self.env['sf.production.process'].search(
[('process_encode', '=', item['process_id_code'])])
[('code', '=', item['process_id_code'])], limit=1)
if not production_process_parameter:
self.create({
"name": item['name'],
@@ -1684,5 +1705,115 @@ class SfMaintenanceEquipmentImage(models.Model):
"image": '' if not item['image'] else base64.b64decode(item['image']),
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
class MaterialApply(models.Model):
_inherit = 'material.apply'
_description = '材料应用'
url = '/api/material_apply/list'
# 定时同步材料应用
def sync_material_apply(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 = sf_sync_config['sf_url'] + self.url
r = requests.post(strUrl, json={}, data=None, headers=headers)
r = r.json()
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['material_apply_yesterday_list']:
brand = self.env['material.apply'].search(
[("name", '=', item['name'])])
if brand:
brand.name = item['name'],
brand.active = item['active']
else:
self.env['material.apply'].create({
"name": item['name'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
# 同步所有材料应用
def sync_all_material_apply(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 = sf_sync_config['sf_url'] + self.url
r = requests.post(strUrl, json={}, data=None, headers=headers)
r = r.json()
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['material_apply_all_list']:
brand = self.env['material.apply'].search(
[("name", '=', item['name'])])
if not brand:
self.env['material.apply'].create({
"name": item['name'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
class ModelInternationalStandards(models.Model):
_inherit = 'sf.international.standards'
_description = '制造标准'
url = '/api/mrs_international_standards/list'
# 定时同步制造标准
def sync_mrs_international_standards(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 = sf_sync_config['sf_url'] + self.url
r = requests.post(strUrl, json={}, data=None, headers=headers)
r = r.json()
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['mrs_international_standards_yesterday_list']:
brand = self.env['sf.international.standards'].search(
[("name", '=', item['name'])])
if brand:
brand.name = item['name'],
brand.active = item['active']
else:
self.env['sf.international.standards'].create({
"name": item['name'],
"active": item['active'],
})
else:
raise ValidationError("认证未通过")
# 同步所有制造标准
def sync_all_mrs_international_standards(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 = sf_sync_config['sf_url'] + self.url
r = requests.post(strUrl, json={}, data=None, headers=headers)
r = r.json()
result = json.loads(r['result'])
if result['status'] == 1:
for item in result['mrs_international_standards_all_list']:
brand = self.env['sf.international.standards'].search(
[("name", '=', item['name'])])
if not brand:
self.env['sf.international.standards'].create({
"name": item['name'],
"active": item['active'],
})
else:
raise ValidationError("能力特征库认证未通过")