changes finished

This commit is contained in:
sinergia 2022-10-06 21:19:48 -05:00
parent 221c887cb6
commit 9493d39b9f
4 changed files with 108 additions and 81 deletions

View File

@ -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'

View File

@ -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)},)

View File

@ -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>

View File

@ -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>