!5461 添加功能

Merge pull request !5461 from 李鹏宇/zhou
This commit is contained in:
李鹏宇
2025-09-28 09:38:43 +00:00
committed by Gitee
3 changed files with 28 additions and 24 deletions
@@ -168,7 +168,7 @@ class MeterArchivesLine(models.Model):
yuthon_property_ids = fields.Many2many('yuthon.property', string='物业信息')
last_meter = fields.Date(string='上次抄表日期')
last_dosage = fields.Float(string='上次用量', compute="compute_meter_values")
last_read = fields.Float(string='上次读数')
last_read = fields.Float(string='上次读数', compute="compute_meter_values")
meter_date = fields.Date(string='任务日期')
current_meter = fields.Float(string='本次用量', compute='compute_meter_values')
current_read = fields.Float(string='本次读数')
@@ -183,7 +183,6 @@ class MeterArchivesLine(models.Model):
end_time = fields.Date(string="拆除日期")
employee_ids = fields.Many2many('hr.employee', string='抄表人')
remarks = fields.Text(string='备注')
is_push = fields.Boolean(string='已推送')
archives_state = fields.Selection([('stop', '停用'), ('use', '正常'), ('rent', '出租')], string='状态',
default='use')
state = fields.Selection([('reading', '已抄'), ('unreading', '未抄')], string='抄表状态', default='unreading')
@@ -212,7 +211,6 @@ class MeterArchivesLine(models.Model):
'state': 'reading'
})
@api.depends('current_read', 'last_read', 'meter_date', 'maximum_count', 'archives_id')
def compute_meter_values(self):
"""合并计算当前用量和上次用量"""
@@ -238,10 +236,13 @@ class MeterArchivesLine(models.Model):
idx = lines.ids.index(line.id)
if idx > 0:
prev_line = lines[idx - 1]
line.last_dosage = (prev_line.current_read or 0) - (prev_line.last_read or 0)
line.last_dosage = prev_line.current_meter
line.last_read = prev_line.current_read
else:
line.last_read = 0
line.last_dosage = 0.0
else:
line.last_read = 0
line.last_dosage = 0.0
@api.onchange('yuthon_property_ids')
+11 -6
View File
@@ -187,13 +187,15 @@ class MeterWaterLine(models.Model):
def compute_meter_values(self):
"""合并计算当前用量和上次用量"""
for line in self:
# 计算当前用量 (原 _compute_current_meter 逻辑)
if line.current_read > line.last_read:
if line.current_read >= line.last_read:
line.current_meter = line.current_read - line.last_read
else:
if line.maximum_count > 0:
max_value = 10 ** line.maximum_count - 1
line.current_meter = max_value - line.last_read + line.current_read
if line.current_read != 0:
if line.maximum_count > 0:
max_value = 10 ** line.maximum_count - 1
line.current_meter = max_value - line.last_read + line.current_read
else:
line.current_meter = 0
else:
line.current_meter = 0
@@ -206,10 +208,13 @@ class MeterWaterLine(models.Model):
idx = lines.ids.index(line.id)
if idx > 0:
prev_line = lines[idx - 1]
line.last_dosage = (prev_line.current_read or 0) - (prev_line.last_read or 0)
line.last_dosage = prev_line.current_meter
line.last_read = prev_line.current_read
else:
line.last_read = 0
line.last_dosage = 0.0
else:
line.last_read = 0
line.last_dosage = 0.0
@api.onchange('yuthon_property_ids')
+12 -14
View File
@@ -46,29 +46,23 @@ class ElectricWaterWizard(models.TransientModel):
)
if not existing_line:
last_read = last_month_line.current_read if last_month_line else 0
last_dosage = last_month_line.current_meter if last_month_line else 0
meter.line_ids.create({
'archives_id': meter.id,
'name': meter.name,
'epitope_values': meter.epitope_values,
'lessee_id': meter.lessee_id.id,
'yuthon_property_ids': [(6, 0, meter.yuthon_property_ids.ids)],
'last_read': last_read,
'last_dosage': last_dosage,
'current_meter': 0,
'unit_number': meter.unit_number,
'last_meter': last_month_line.meter_date,
'gauge_magnification': meter.gauge_magnification,
'last_reading_time': self.push_date,
'last_reading_time': last_month_line.meter_date,
'meter_date': self.push_date,
'type': meter.type,
'start_time': meter.start_time,
'end_time': meter.end_time,
'archives_state': meter.archives_state,
'maximum_count': meter.maximum_count,
'is_push': True
})
# 处理水表推送
@@ -88,17 +82,21 @@ class ElectricWaterWizard(models.TransientModel):
)
if not existing_line:
last_read = last_month_line.current_read if last_month_line else 0
last_dosage = last_month_line.current_meter if last_month_line else 0
water.line_ids.create({
'water_id': water.id,
'name': water.name,
'epitope_values': water.epitope_values,
'lessee_id': water.lessee_id.id,
'last_read': last_read,
'last_dosage': last_dosage,
'yuthon_property_ids': [(6, 0, water.yuthon_property_ids.ids)],
'current_meter': 0,
'meter_date': self.push_date,
'unit_number': water.unit_number,
'last_meter': last_month_line.meter_date,
'is_push': True
'gauge_magnification': water.gauge_magnification,
'last_reading_time': last_month_line.meter_date,
'meter_date': self.push_date,
'type': water.type,
'start_time': water.start_time,
'end_time': water.end_time,
'archives_state': water.archives_state,
'maximum_count': water.maximum_count,
})