changes finished
This commit is contained in:
parent
221c887cb6
commit
9493d39b9f
163
maintenance.py
163
maintenance.py
@ -150,16 +150,17 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
def finished(cls, maintenances):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
'Equipment Maintenance'
|
||||
__name__ = 'optical_equipment.maintenance'
|
||||
|
||||
_states={'required': True}
|
||||
_states={'required': True,
|
||||
'readonly': Eval('state').in_(['finished'])}
|
||||
|
||||
service_maintenance = fields.Many2One('optical_equipment_maintenance.service', "Maintenance Service",
|
||||
ondelete='CASCADE', select=True)
|
||||
ondelete='CASCADE', select=True,
|
||||
states=_states)
|
||||
code = fields.Char(
|
||||
"Code", select=True,states={'readonly': True })
|
||||
maintenance_type = fields.Selection([('preventive', 'Preventive'),
|
||||
@ -181,16 +182,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
states=_states,
|
||||
depends=['service_maintenance'])
|
||||
#when the maintenance is in agended status
|
||||
diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary',
|
||||
states=_states)
|
||||
#estimated_agended = fields.DateTime("Date Maintenance")
|
||||
#state_agended = fields.Selection([('no_agenda', "No agenda"),
|
||||
# ('agended', "Agended"),
|
||||
# ('in_progress', "In progress"),
|
||||
# ('finish', "Finish"),
|
||||
# ('failed', "Failed")], "State Agenda")
|
||||
|
||||
#technical = fields.Many2One('company.employee', "Technical")
|
||||
diary = fields.One2Many('optical_equipment_maintenance.diary', 'diary')
|
||||
#Preventive maintenance
|
||||
initial_operation = fields.Boolean("Verificiación inicial de funcionamiento")
|
||||
check_equipment = fields.Boolean("Revisión del Equipo")
|
||||
@ -199,7 +191,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
clean_eyes = fields.Boolean("Limpieza de lentes y espejos")
|
||||
optical = fields.Boolean("Optical")
|
||||
check_calibration = fields.Boolean("Verificar Calibración")
|
||||
maintenance_activity = fields.One2Many('optical_equipment_maintenance.activity', 'maintenance', "Maintenance Activitys", states=_states)
|
||||
maintenance_activity = fields.One2Many('optical_equipment_maintenance.activity', 'maintenance', "Maintenance Activitys")
|
||||
#Calibration
|
||||
patterns_equipments = fields.Char("K Pattern", states={'readonly': True},
|
||||
depends=['equipment'])
|
||||
@ -210,21 +202,6 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
states={'readonly': Eval('state') == 'finished'})
|
||||
maintenance_lines = fields.One2Many('optical_equipment.maintenance.line', 'maintenance', 'Lines')
|
||||
|
||||
"""
|
||||
temperature_min = fields.Float("Temp Min")
|
||||
temperature_max = fields.Float("Temp Max")
|
||||
temperature_uom = fields.Many2One('product.uom', 'Temperature UOM',
|
||||
domain=[('category', '=', Id('optical_equipment', "uom_cat_temperature"))],
|
||||
states={'invisible' : If(Eval('temperature_min') == None, True)},
|
||||
depends=['itemperature_min'])
|
||||
|
||||
moisture_min = fields.Float("Moisture Min")
|
||||
moisture_max = fields.Float("Moisture Max")
|
||||
moisture_uom = fields.Many2One('product.uom', "Moisture UOM",
|
||||
domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))],
|
||||
states={'invisible' : If(Eval('moisture_min') == None, True)},
|
||||
depends=['moisture_min'])
|
||||
"""
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Maintenance, cls).__setup__()
|
||||
@ -234,7 +211,8 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
cls._buttons.update({
|
||||
'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])},
|
||||
'finished': {'invisible': Eval('state').in_(['finished'])},
|
||||
'calibrate': {'invisible': (Eval('lines_calibration') == () | Eval('state').in_(['finished']),)}
|
||||
'calibrate': {'invisible': (Eval('lines_calibration') == ()) | (Eval('state').in_(['finished'])),
|
||||
'depends': ['state'],}
|
||||
})
|
||||
|
||||
@classmethod
|
||||
@ -273,7 +251,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
n_samples = len(samples)
|
||||
mean = sum_samples / n_samples
|
||||
dev_std_square = sum((l-mean)**2 for l in samples) / (n_samples -1)
|
||||
dev_std = round(mt.sqrt(dev_std_square), 2)
|
||||
dev_std = mt.sqrt(dev_std_square)
|
||||
|
||||
return dev_std
|
||||
|
||||
@ -283,7 +261,7 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
uncertain type A
|
||||
"""
|
||||
n_samples = len(samples)
|
||||
uncertain_type_A = round(dev_std /mt.sqrt(n_samples),2)
|
||||
uncertain_type_A = dev_std /mt.sqrt(n_samples)
|
||||
|
||||
return uncertain_type_A
|
||||
|
||||
@ -315,21 +293,27 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
return uncertain_b2
|
||||
|
||||
def get_uncertain_b2_analog(self):
|
||||
#Incertidumbre por resolución Análoga
|
||||
# a contante que viene del equipo
|
||||
"""
|
||||
Incertidumbre por resolución Análoga
|
||||
a contante que viene del equipo
|
||||
"""
|
||||
uncertain_b2_analog = d/a * math.sqrt(3)
|
||||
|
||||
return uncertain_b2_analog
|
||||
|
||||
def get_uncertain_combinated(self):
|
||||
#Incertidumbre Combinada
|
||||
"""
|
||||
Incertidumbre Combinada
|
||||
"""
|
||||
sum_uncertain_c = uncertain_type_A**2 + uncertain_b1**2 + uncertain_b2**2
|
||||
uncertain_c = math.sqrt(sum_uncertain_c)
|
||||
|
||||
return uncertain_c
|
||||
|
||||
def get_uncertain_eff(self):
|
||||
#Grados Efectivos de libertad
|
||||
"""
|
||||
Grados Efectivos de libertad
|
||||
"""
|
||||
uncertain_eff = uncertain_c**4/((uncertain_type_A**4)/(len(sample)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2**4/U_subi))
|
||||
|
||||
return uncertain_eff
|
||||
@ -389,40 +373,68 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
samples = dates[pattern]
|
||||
U_subi = maintenance.equipment.product.Usubi
|
||||
uncertain_pattern = maintenance.equipment.product.uncertainy_pattern
|
||||
#d_resolution = maintenance.equipment.product.d_resolution
|
||||
d_resolution = 0.25
|
||||
a_resolution = maintenance.equipment.product.a_factor_resolution
|
||||
MEP = maintenance.equipment.product.MEP
|
||||
dev_std = cls.get_standard_deviation(samples)
|
||||
uncertain_type_A = cls.get_uncertain_type_A(samples, dev_std)
|
||||
uncertain_b1 = MEP / mt.sqrt(3)
|
||||
k_certificated_calibration = 2
|
||||
uncertain_b1a = round(uncertain_pattern / k_certificated_calibration, 2)
|
||||
uncertain_b2_digital = round(d_resolution / 2*mt.sqrt(3),2)
|
||||
uncertain_b2_analog = round(d_resolution / a_resolution*mt.sqrt(3),2)
|
||||
sum_uncertain_c = uncertain_type_A**2 + uncertain_b1**2 + uncertain_b2_digital**2
|
||||
uncertain_c = round(mt.sqrt(sum_uncertain_c),2)
|
||||
uncertain_eff = round(uncertain_c**4/((uncertain_type_A**4)/(len(samples)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2_digital**4/U_subi)),2)
|
||||
t_student = round(t.ppf(1-0.025, uncertain_eff),2)
|
||||
uncertain_b1 = MEP / mt.sqrt(3) #Ub1_patron a 2 Decimales
|
||||
uncertain_b1a = uncertain_pattern / k_certificated_calibration #Ub1_MEP
|
||||
|
||||
if maintenance.equipment.product.resolution_type == "analoga":
|
||||
a_resolution = maintenance.equipment.product.analog_resolution
|
||||
factor_a = maintenance.equipment.product.a_factor_resolution
|
||||
uncertain_b2_analog = (a_resolution) / (factor_a*mt.sqrt(3))
|
||||
sum_uncertain_c = (uncertain_type_A**2) + (uncertain_b1**2) + (uncertain_b2_analog**2)
|
||||
uncertain_c = mt.sqrt(sum_uncertain_c)
|
||||
uncertain_eff = uncertain_c**4/((uncertain_type_A**4)/(len(samples)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2_analog**4/U_subi))
|
||||
elif maintenance.equipment.product.resolution_type == "digital":
|
||||
d_resolution = maintenance.equipment.product.d_resolution
|
||||
uncertain_b2_digital = (d_resolution) / (2*mt.sqrt(3))
|
||||
sum_uncertain_c = (uncertain_type_A**2) + (uncertain_b1**2) + (uncertain_b2_digital**2)
|
||||
uncertain_c = mt.sqrt(sum_uncertain_c)
|
||||
uncertain_eff = uncertain_c**4/((uncertain_type_A**4)/(len(samples)-1)+(uncertain_b1**4/U_subi)+(uncertain_b2_digital**4/U_subi))
|
||||
|
||||
|
||||
t_student = t.ppf(1-0.025, uncertain_eff)
|
||||
uncertain_expanded = round((t_student * uncertain_c),2)
|
||||
|
||||
calibrationLineTotal = CalibrationLineTotal(
|
||||
dev_std=dev_std,
|
||||
uncertain_type_A=uncertain_type_A,
|
||||
uncertain_pattern=uncertain_pattern,
|
||||
k_c_calibration=k_certificated_calibration,
|
||||
uncertain_U_b1=uncertain_b1a,
|
||||
d_resolution=d_resolution,
|
||||
uncertain_U_b2_dig=uncertain_b2_digital,
|
||||
uncertain_U_b2_ana=uncertain_b2_analog,
|
||||
uncertain_combinated=uncertain_c,
|
||||
uncertain_eff=uncertain_eff,
|
||||
t_student=t_student,
|
||||
uncertain_expanded=uncertain_expanded
|
||||
)
|
||||
if maintenance.equipment.product.resolution_type == "analoga":
|
||||
calibrationLineTotal = CalibrationLineTotal(
|
||||
dev_std=dev_std,
|
||||
uncertain_type_A=uncertain_type_A,
|
||||
uncertain_pattern=uncertain_pattern,
|
||||
k_c_calibration=k_certificated_calibration,
|
||||
uncertain_U_b1=uncertain_b1,
|
||||
d_resolution=a_resolution,
|
||||
uncertain_U_b2_dig=0,
|
||||
uncertain_U_b2_ana=uncertain_b2_analog,
|
||||
uncertain_combinated=uncertain_c,
|
||||
uncertain_eff=uncertain_eff,
|
||||
t_student=t_student,
|
||||
uncertain_expanded=uncertain_expanded,
|
||||
state='Aprobado' if uncertain_expanded < a_resolution else 'Rechazado'
|
||||
)
|
||||
maintenance.calibration_total += (calibrationLineTotal,)
|
||||
maintenance.save()
|
||||
|
||||
maintenance.calibration_total += (calibrationLineTotal,)
|
||||
maintenance.save()
|
||||
elif maintenance.equipment.product.resolution_type == "digital":
|
||||
calibrationLineTotal = CalibrationLineTotal(
|
||||
dev_std=dev_std,
|
||||
uncertain_type_A=uncertain_type_A,
|
||||
uncertain_pattern=uncertain_pattern,
|
||||
k_c_calibration=k_certificated_calibration,
|
||||
uncertain_U_b1=uncertain_b1,
|
||||
d_resolution=d_resolution,
|
||||
uncertain_U_b2_dig=uncertain_b2_digital,
|
||||
uncertain_U_b2_ana=0,
|
||||
uncertain_combinated=uncertain_c,
|
||||
uncertain_eff=uncertain_eff,
|
||||
t_student=t_student,
|
||||
uncertain_expanded=uncertain_expanded,
|
||||
state='Aprobado' if uncertain_expanded < d_resolution else 'Rechazado'
|
||||
)
|
||||
maintenance.calibration_total += (calibrationLineTotal,)
|
||||
maintenance.save()
|
||||
|
||||
|
||||
class Calibration(ModelSQL, ModelView):
|
||||
@ -433,20 +445,21 @@ class Calibration(ModelSQL, ModelView):
|
||||
|
||||
maintenance = fields.Many2One('optical_equipment.maintenance', "Maintenance", ondelete="CASCADE",
|
||||
select=True, required=True)
|
||||
dev_std = fields.Float("Standart Desviation", _digits, states=_states)
|
||||
uncertain_type_A = fields.Float("Uncertain Type A", _digits, states=_states)
|
||||
uncertain_pattern = fields.Float("Uncertain Pattern", _digits, states=_states)
|
||||
k_c_calibration = fields.Float("K Crt Calibration", _digits,states=_states)
|
||||
uncertain_U_b1 = fields.Float("U_b1", _digits, states=_states)
|
||||
d_resolution = fields.Float("d_resolution", _digits, states=_states)
|
||||
uncertain_U_b2_dig = fields.Float("U_b2", _digits, states=_states)
|
||||
uncertain_U_b2_ana = fields.Float("U_b2", _digits, states=_states)
|
||||
uncertain_combinated = fields.Float("U_combinated", _digits, states=_states)
|
||||
uncertain_eff = fields.Float("U eff", _digits, states=_states)
|
||||
t_student = fields.Float("T Student", _digits, states=_states)
|
||||
dev_std = fields.Float("Standart Desviation", states=_states)
|
||||
uncertain_type_A = fields.Float("Uncertain Type A", states=_states)
|
||||
uncertain_pattern = fields.Float("Uncertain Pattern", states=_states)
|
||||
k_c_calibration = fields.Float("K Crt Calibration",states=_states)
|
||||
uncertain_U_b1 = fields.Float("U_b1", states=_states)
|
||||
d_resolution = fields.Float("d_resolution", states=_states)
|
||||
uncertain_U_b2_dig = fields.Float("U_b2", states=_states)
|
||||
uncertain_U_b2_ana = fields.Float("U_b2", states=_states)
|
||||
uncertain_combinated = fields.Float("U_combinated", states=_states)
|
||||
uncertain_eff = fields.Float("U eff", states=_states)
|
||||
t_student = fields.Float("T Student", states=_states)
|
||||
uncertain_expanded = fields.Float("Uexpand", _digits, states=_states)
|
||||
|
||||
|
||||
state = fields.Char('State')
|
||||
|
||||
class CalibrationSample(sequence_ordered(), ModelView, ModelSQL):
|
||||
'Samples of Calibration'
|
||||
__name__ = 'optical_equipment.maintenance.calibration_sample'
|
||||
|
@ -169,16 +169,13 @@ class Template(metaclass=PoolMeta):
|
||||
states={'required': Eval('calibration', False)},
|
||||
depends=['calibration'])
|
||||
d_resolution = fields.Float("Resolution d",
|
||||
states={'invisible': If(Eval('resolution_type') != 'digital', True),
|
||||
'required': Eval('calibration', False)},
|
||||
states={'invisible': If(Eval('resolution_type') != 'digital', True)},
|
||||
depends=['resolution_type'])
|
||||
analog_resolution = fields.Float("Analog resolution",
|
||||
states={'invisible': If(Eval('resolution_type') != 'analoga', True),
|
||||
'required': Eval('calibration', False)},
|
||||
states={'invisible': If(Eval('resolution_type') != 'analoga', True),},
|
||||
depends=['resolution_type'])
|
||||
a_factor_resolution = fields.Float("(a) Resolution",
|
||||
states={'invisible': If(Eval('resolution_type') != 'analoga', True),
|
||||
'required': Eval('calibration', False)},
|
||||
states={'invisible': If(Eval('resolution_type') != 'analoga', True)},
|
||||
depends=['resolution_type'])
|
||||
Usubi = fields.Integer("Usub i",states={'required': Eval('calibration', False)},)
|
||||
|
||||
|
@ -12,4 +12,20 @@
|
||||
<field name="k_c_calibration"/>
|
||||
<label name="uncertain_U_b1"/>
|
||||
<field name="uncertain_U_b1"/>
|
||||
<label name="d_resolution"/>
|
||||
<field name="d_resolution"/>
|
||||
<label name="uncertain_U_b2_dig"/>
|
||||
<field name="uncertain_U_b2_dig"/>
|
||||
<label name="uncertain_U_b2_ana"/>
|
||||
<field name="uncertain_U_b2_ana"/>
|
||||
<label name="uncertain_combinated"/>
|
||||
<field name="uncertain_combinated"/>
|
||||
<label name="uncertain_eff"/>
|
||||
<field name="uncertain_eff"/>
|
||||
<label name="t_student"/>
|
||||
<field name="t_student"/>
|
||||
<label name="uncertain_expanded"/>
|
||||
<field name="uncertain_expanded"/>
|
||||
<label name="state"/>
|
||||
<field name="state"/>
|
||||
</form>
|
||||
|
@ -14,4 +14,5 @@
|
||||
<field name="uncertain_eff" expand="1"/>
|
||||
<field name="t_student" expand="1"/>
|
||||
<field name="uncertain_expanded" expand="1"/>
|
||||
<field name="state" expand="1"/>
|
||||
</tree>
|
||||
|
Loading…
Reference in New Issue
Block a user