From d0f007faf4a4e63506bbb0c8b88318350603acef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Mon, 23 Mar 2026 17:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/property_meter_archives.py | 10 +++++++-- .../models/property_meter_water.py | 8 ++++++- .../wizard/electric_water_wizard.py | 21 ++++++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/yuthon_property/models/property_meter_archives.py b/yuthon_property/models/property_meter_archives.py index 1c8e5e951..3417f3949 100644 --- a/yuthon_property/models/property_meter_archives.py +++ b/yuthon_property/models/property_meter_archives.py @@ -64,11 +64,17 @@ class PropertyMeterArchives(models.Model): def meter_tasks(self): current_date = fields.Date.today() current_date = current_date.replace(day=15) + month_start = current_date.replace(day=1) + if current_date.month == 12: + month_end = current_date.replace(year=current_date.year + 1, month=1, day=1) - timedelta(days=1) + else: + month_end = current_date.replace(month=current_date.month + 1, day=1) - timedelta(days=1) meter_archives = self.search([]) for archive in meter_archives: existing_lines = self.env["meter.archives.line"].search([ ("archives_id", "=", archive.id), - ("meter_date", "=", current_date), + ("meter_date", ">=", month_start), + ("meter_date", "<=", month_end), ], limit=1) if not existing_lines: self.env["meter.archives.line"].create({ @@ -77,7 +83,7 @@ class PropertyMeterArchives(models.Model): "meter_date": current_date, "state": "unreading", "archives_state": "use", - "unit": archive.unit or 0.0, + "unit": archive.unit or 0.0, "gauge_magnification": archive.gauge_magnification or 1, "line_loss": 0.02, "type": archive.type, diff --git a/yuthon_property/models/property_meter_water.py b/yuthon_property/models/property_meter_water.py index 9f66eb465..e017befcd 100644 --- a/yuthon_property/models/property_meter_water.py +++ b/yuthon_property/models/property_meter_water.py @@ -65,11 +65,17 @@ class PropertyMeterWater(models.Model): def water_task(self): current_date = fields.Date.today() current_date = current_date.replace(day=15) + month_start = current_date.replace(day=1) + if current_date.month == 12: + month_end = current_date.replace(year=current_date.year + 1, month=1, day=1) - timedelta(days=1) + else: + month_end = current_date.replace(month=current_date.month + 1, day=1) - timedelta(days=1) water_archives = self.search([]) for water in water_archives: existing_lines = self.env["meter.water.line"].search([ ("water_id", "=", water.id), - ("meter_date", "=", current_date), + ("meter_date", ">=", month_start), + ("meter_date", "<=", month_end), ], limit=1) if not existing_lines: self.env["meter.water.line"].create({ diff --git a/yuthon_property/wizard/electric_water_wizard.py b/yuthon_property/wizard/electric_water_wizard.py index a6f1c3a5c..68900a580 100644 --- a/yuthon_property/wizard/electric_water_wizard.py +++ b/yuthon_property/wizard/electric_water_wizard.py @@ -12,6 +12,14 @@ class ElectricWaterWizard(models.TransientModel): water_ids = fields.Many2many('property.meter.water', string='水表库') def confirm(self): + push_date = self.push_date + # 当月第一天 + month_start = push_date.replace(day=1) + # 当月最后一天(处理12月边界) + if push_date.month == 12: + month_end = push_date.replace(year=push_date.year + 1, month=1, day=1) - datetime.timedelta(days=1) + else: + month_end = push_date.replace(month=push_date.month + 1, day=1) - datetime.timedelta(days=1) # 处理电表推送 if self.meter_ids: is_acc = False @@ -51,8 +59,11 @@ class ElectricWaterWizard(models.TransientModel): # 查找上个月的记录,上次用量,上次读数,上次抄表日期 last_month_line = meter.line_ids.search([('meter_date', '<', self.push_date)]).sorted('meter_date')[-1] # 如果当前数据不存在,则新建任务,按照天的纬度 - self_month_line = meter.line_ids.search( - [('meter_date', '=', self.push_date), ('archives_id', '=', meter.id)]) + self_month_line = meter.line_ids.search([ + ('meter_date', '>=', month_start), + ('meter_date', '<=', month_end), + ('archives_id', '=', meter.id) + ]) if not self_month_line: meter.line_ids.create({ 'archives_id': meter.id, @@ -113,7 +124,11 @@ class ElectricWaterWizard(models.TransientModel): # 查找上个月的记录,上次用量,上次读数,上次抄表日期 last_month_line = water.line_ids.search([('meter_date', '<', self.push_date)]).sorted('meter_date')[-1] # 如果当前数据不存在,则新建任务,按照天的纬度 - self_month_line = water.line_ids.search([('meter_date', '=', self.push_date), ('water_id', '=', water.id)]) + self_month_line = water.line_ids.search([ + ('meter_date', '>=', month_start), + ('meter_date', '<=', month_end), + ('water_id', '=', water.id) + ]) if not self_month_line: water.line_ids.create({ 'water_id': water.id,