Files
gzth/yuthon_property/wizard/property_meter_wizard.py
T
2025-01-11 17:49:51 +08:00

62 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models, fields, api, _, SUPERUSER_ID
from odoo.exceptions import ValidationError, UserError
from pypinyin import pinyin, Style
import xlrd
import base64
import datetime
from datetime import datetime
class PropertyMeterWizard(models.Model):
_name = 'property.meter.wizard'
excel_file = fields.Binary(string="上传Excel表")
excel_name = fields.Char(string="文件名")
def confirm(self):
"""
导入excel文件,按行读取数据并处理
"""
if not self.excel_file:
raise ValidationError('请上传文件。')
book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file))
sh = book.sheet_by_index(0)
for rx in range(1, sh.nrows):
row = sh.row(rx)
self.property_meter_data(row)
def property_meter_data(self,row):
name = row[0].value
unit_number = row[1].value
installation_location = row[2].value
if row[4].value:
gauge_magnification = float(row[4].value)
else:
gauge_magnification = None
property_id = self.env['yuthon.property'].search([('name', '=', row[8].value)])
meter_list = []
type_dict = {'公共':'public', '收费':'fees', '':''}
type = type_dict.get(row[6].value)
state_dict = {'启用': 1, '停用': 0, '': ''}
is_state = state_dict.get(row[7].value)
meter_data = {
'name': name,
'unit_number': unit_number,
'installation_location': installation_location,
'type': type,
'gauge_magnification': gauge_magnification,
'yuthon_property_id':property_id.id if property_id else None,
'is_state':is_state
}
meter_id = self.env['property.meter.archives'].create(meter_data)
if property_id:
meter_list.append((0, 0, {
'property_meter_archives_id': meter_id.id,
}))
property_id.write({
'is_electricity_meter' : True,
})
property_id.energy_meter_ids = [(5, 0, 0)]
property_id.energy_meter_ids = meter_list