添加功能

This commit is contained in:
李鹏宇
2025-10-15 18:46:32 +08:00
parent 66f6a85c71
commit f362d50416
3 changed files with 52 additions and 25 deletions
+22 -14
View File
@@ -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,
+29 -11
View File
@@ -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,
@@ -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),