diff --git a/yuthon_property/wizard/property_meter_wizard.py b/yuthon_property/wizard/property_meter_wizard.py index a7734bb5d..c0203aa4a 100644 --- a/yuthon_property/wizard/property_meter_wizard.py +++ b/yuthon_property/wizard/property_meter_wizard.py @@ -76,17 +76,6 @@ class PropertyMeterWizard(models.Model): # 处理类型转换 type_dict = {'公共': 'public', '收费': 'fees', '': ''} meter_type = type_dict.get(row[7].value if len(row) > 7 else '', '') - - # 处理物业信息 - property_id = None - if installation_location: # 使用安装位置匹配物业 - property_search = self.env['yuthon.property'].search( - [('name', '=', installation_location)], - limit=1 - ) - if property_search: - property_id = property_search - current_read_index = month + 9 meter_date = datetime(2025, month, 15) current_read = None @@ -96,13 +85,31 @@ class PropertyMeterWizard(models.Model): except ValueError: current_read = None - # 查找或创建主表记录(按仪表编号) - archives = self.env['property.meter.archives'].search([('name', '=', name), - ], limit=1) + property_id = None + if installation_location: + property_search = self.env['yuthon.property'].search( + [('name', '=', installation_location)], + limit=1 + ) + if property_search: + property_id = property_search + + # 处理物业信息(模糊匹配以及小数为.0的) + if type(name) == float: + name = int(name) + archives = self.env['property.meter.archives'].search([ + ('name', 'ilike', f'%{name}%') + ], limit=1) + + epitope_values_id = self.env['yuthon.epitope.values'].search([('name', '=', epitope_values)], limit=1) + if not epitope_values_id: + epitope_values_id = self.env['yuthon.epitope.values'].create({'name': epitope_values, + 'type': 'ammeter'}) if not archives: archives = self.env['property.meter.archives'].create({ 'name': name, 'epitope_values': epitope_values, + 'epitope_values_id': epitope_values_id.id, 'start_time': start_date, 'end_time': end_date, 'unit_number': unit_number, @@ -116,6 +123,7 @@ class PropertyMeterWizard(models.Model): # 更新已有记录的部分字段 archives.write({ 'epitope_values': epitope_values, + 'epitope_values_id': epitope_values_id.id, 'start_time': start_date, 'end_time': end_date, 'unit_number': unit_number, diff --git a/yuthon_property/wizard/property_water_wizard.py b/yuthon_property/wizard/property_water_wizard.py index e7b5dd1e5..ce52fe6cf 100644 --- a/yuthon_property/wizard/property_water_wizard.py +++ b/yuthon_property/wizard/property_water_wizard.py @@ -58,14 +58,6 @@ class PropertyWaterWizard(models.Model): type_dict = {'公共': 'public', '收费': 'fees', '': ''} meter_type = type_dict.get(row[7].value) - # 物业信息 - property_id = None - if row[2].value: - property_search = self.env['yuthon.property'].search([('name', '=', row[2].value)], limit=1) - if property_search: - property_id = property_search[0] - - current_read_index = month + 9 meter_date = datetime(2025, month, 15) current_read = None @@ -75,9 +67,21 @@ class PropertyWaterWizard(models.Model): except ValueError: current_read = None - # 查找或创建水表主记录 - water = self.env['property.meter.water'].search([('name', '=', name), - ], limit=1) + property_id = None + if installation_location: + search_value = installation_location.strip() + try: + if float(search_value) == int(float(search_value)): + search_value = str(int(float(search_value))) + except (ValueError, TypeError): + pass + + property_search = self.env['yuthon.property'].search([ + ('name', 'ilike', f'%{search_value}%') + ], limit=1) + if property_search: + property_id = property_search + excel_start_date = datetime(1899, 12, 30) if row[19].value: start_date = excel_start_date + timedelta(days=row[19].value) @@ -88,10 +92,24 @@ class PropertyWaterWizard(models.Model): end_date = excel_start_date + timedelta(days=row[20].value) else: end_date = None + + # 处理物业信息(模糊匹配以及小数为.0的) + if type(name) == float: + name = int(name) + water = self.env['property.meter.water'].search([ + ('name', 'ilike', f'%{name}%') + ], limit=1) + + epitope_values_id = self.env['yuthon.epitope.values'].search([('name', '=', epitope_values)], limit=1) + if not epitope_values_id: + epitope_values_id = self.env['yuthon.epitope.values'].create({'name': epitope_values, + 'type': 'ammeter'}) + if not water: water = self.env['property.meter.water'].create({ 'name': name, 'epitope_values': epitope_values, + 'epitope_values_id':epitope_values_id.id, 'start_time': start_date, 'end_time': end_date, 'unit_number': unit_number, diff --git a/yuthon_property_approval/wizard/property_rental_wizard.py b/yuthon_property_approval/wizard/property_rental_wizard.py index 5baf01f13..e13b40e0b 100644 --- a/yuthon_property_approval/wizard/property_rental_wizard.py +++ b/yuthon_property_approval/wizard/property_rental_wizard.py @@ -108,6 +108,7 @@ class PropertyRentalWizard(models.Model): original_amount = rent_amount else: original_amount = 0 + start_date = start_date.replace(day=15) standard_id = property_id.message_standard_id matched_info = property_id.manage_information_ids.search([ ('start_time', '<=', start_date),