From aeed453824c4d5434ff6ab7c8c4165ccb9e9786c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 16 Jun 2025 08:54:23 +0800 Subject: [PATCH 1/2] 1 --- attendance_iot/controllers/kaoqin_test.py | 18 +-- soong_workflow/models/soong_workflow_mixin.py | 13 +- .../controllers/ele_water_reading.py | 150 +----------------- 3 files changed, 11 insertions(+), 170 deletions(-) diff --git a/attendance_iot/controllers/kaoqin_test.py b/attendance_iot/controllers/kaoqin_test.py index 9d6644c6e..c00f4c766 100644 --- a/attendance_iot/controllers/kaoqin_test.py +++ b/attendance_iot/controllers/kaoqin_test.py @@ -16,12 +16,9 @@ class BusController(Controller): data = request.httprequest.json user_name = data.get('name') name = data.get('sn') - # validity_period = datetime.strptime(data.get('validity_period'), '%Y-%m-%d').date() - attendance_iot_id = request.env["attendance.iot"].search([('name', '=', name)]) + attendance_iot_id = request.env(user=SUPERUSER_ID)["attendance.iot"].search([('name', '=', name)]) if not attendance_iot_id: - request.env["attendance.iot"].create({ - 'name': name, - }) + request.env(user=SUPERUSER_ID)["attendance.iot"].create({'name': name,}) employee = request.env(user=SUPERUSER_ID)["hr.employee"].search([('name', '=', user_name)]) # 判断员工是否绑定多台设备 if employee and attendance_iot_id not in employee.attendance_iot_ids.mapped('attendance_iot_id'): @@ -29,12 +26,10 @@ class BusController(Controller): 'image_1920': data.get('photo'), 'attendance_iot_ids': [(0, 0, { 'employee_id': employee.id, - 'attendance_address': self.get_equipment_company(data.get('sn')), + 'attendance_address': '', 'attendance_iot_id': attendance_iot_id.id })] }) - - print("---------------------------------------------测试成功---------------------------------------") return {"Result": 0, "Msg": "添加成功"} @@ -54,9 +49,8 @@ class BusController(Controller): request.env(user=SUPERUSER_ID)["hr.attendance.detail"].create({ 'employee_id': employee_id.id, # 员工 'checkin_time': checkin_time, # 打卡时间 - 'source': 'iot', # 打卡来源 - 'attendance_iot_id': attendance_iot_id.id, # 打卡设备 - 'location_title': data.get('logs')[0].get("location").get('address'), # 打卡地点 + 'source': 'iot', # 打卡来源 + 'attendance_iot_id': attendance_iot_id.id, # 打卡设备 + 'location_title': data.get('logs')[0].get("location").get('address'), # 打卡地点 }) - print("---------------------------------------------测试成功---------------------------------------") return {"Result": 0, "Msg": "添加成功"} diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index ef3606076..4523674eb 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -69,18 +69,8 @@ class SoongWorkflowMixin(models.AbstractModel): string="Status", default=_compute_default_state, track_visibility="onchange", - store = True + store=True ) - # approve_state = fields.Selection( - # [ - # ("start", "Start"), - # ("pending", "Pending"), - # ("end", "End"), - # ], - # default="start", - # string="Approve Status", - # compute="_compute_node_id", - # ) workflow_id = fields.Many2one( comodel_name="soong.workflow", string="Workflow Ref.", @@ -159,7 +149,6 @@ class SoongWorkflowMixin(models.AbstractModel): employee_ids = record.sudo().env['hr.employee'].search([ '|', ('user_role_id', 'in', button_id.users_role_group_ids.user_role_ids.ids), ('user_role_ids', 'in', button_id.users_role_group_ids.user_role_ids.ids), '|', ('department_id', '=', record.env.user.employee_id.department_id.id), ('department_ids', 'in', record.env.user.employee_id.department_id.id),]) - if record.env.user.employee_id.id in employee_ids.ids: record.state = button_id.node_id.node_name return res diff --git a/yuthon_property_approval/controllers/ele_water_reading.py b/yuthon_property_approval/controllers/ele_water_reading.py index 5c682e4cc..e4d7f5ce6 100644 --- a/yuthon_property_approval/controllers/ele_water_reading.py +++ b/yuthon_property_approval/controllers/ele_water_reading.py @@ -1,10 +1,5 @@ from odoo.http import Controller, request, route -from odoo import models, fields, api, http, SUPERUSER_ID, _ -from datetime import datetime -import math import logging -from geopy.distance import geodesic -from datetime import timedelta import json _logger = logging.getLogger(__name__) @@ -14,125 +9,6 @@ class EleWaterReading(Controller): """ 水电抄表接口 """ - @route('/yuthon/ele/reading', methods=['POST'], type='json', auth='none', csrf=False) - def yuthon_pro_reading(self, **kw): - """ - 电表抄表 - :return: - { - 'code': 编号, - 'property_id': '物业地址' - 'contract_id': '合同' - 'lessee_id': '承租方' - 'last_dosage': '上次用量', - 'current_meter': '本次用量', - 'dosage': '用量', - 'employee_list': [抄表人姓名], - } - """ - ele_ids = request.env['property.electric.reading'].search([('reading_type', '=', '待抄')]) - employee_list = [] - for ele_id in ele_ids: - code = ele_id.property_id.code - property_id = ele_id.property_id.name - contract_id = ele_id.contract_id.name - lessee_id = ele_id.contract_id.lessee_id.name - last_dosage = ele_id.last_dosage - current_meter = ele_id.current_meter - dosage = ele_id.dosage - for employee_id in ele_id.employee_ids: - employee_list.append(employee_id.name) - employee_list = ", ".join(employee_list) - - return_data = { - 'data': { - 'code': code, - 'property_id': property_id, - 'contract_id': contract_id, - 'lessee_id': lessee_id, - 'last_dosage': last_dosage, - 'current_meter': current_meter, - 'dosage': dosage, - 'employee_list': employee_list, - }, - 'code': '200', - 'message': 'OK', - } - _logger.info("-----------------测试成功----------------") - return json.dumps(return_data) - - @route('/yuthon/pro/dosage', methods=['POST'], type='json', auth='none', csrf=False) - def yuthon_pro_dosage(self, **kw): - """ - :param kw: - :return: - """ - code = kw.get('code') # 编号 - dosage = kw.get('dosage') # 用量 - water_reading = request.env['property.water.reading'].search([('code', '=', code)], limit=1) - electric_reading = request.env['property.electric.reading'].search([('code', '=', code)], limit=1) - if water_reading: - water_reading.write({ - 'dosage': dosage - }) - if electric_reading: - electric_reading.write({ - 'dosage': dosage - }) - - return_data = { - 'data': {}, - 'code': '200', - 'message': 'OK', - } - _logger.info("-----------------测试成功----------------") - return json.dumps(return_data) - - @route('/yuthon/water/reading', methods=['POST'], type='json', auth='none', csrf=False) - def yuthon_water_reading(self, **kw): - """ - 水表抄表 - :return: - { - 'code': 编号, - 'property_id': '物业地址' - 'contract_id': '合同' - 'lessee_id': '承租方' - 'last_dosage': '上次用量', - 'current_meter': '本次用量', - 'dosage': '用量', - 'employee_list': [抄表人姓名], - } - """ - ele_ids = self.env['property.water.reading'].search([('reading_type', '=', '待抄')]) - employee_list = [] - for ele_id in ele_ids: - code = ele_id.property_id.code - property_id = ele_id.property_id.name - contract_id = ele_id.contract_id.name - lessee_id = ele_id.contract_id.lessee_id.name - last_dosage = ele_id.last_dosage - current_meter = ele_id.current_meter - dosage = ele_id.dosage - for employee_id in ele_id.employee_ids: - employee_list.append(employee_id.name) - employee_list = ", ".join(employee_list) - return_data = { - 'data': { - 'code': code, - 'property_id': property_id, - 'contract_id': contract_id, - 'lessee_id': lessee_id, - 'last_dosage': last_dosage, - 'current_meter': current_meter, - 'dosage': dosage, - 'employee_list': employee_list, - }, - 'code': '200', - 'message': 'OK', - } - _logger.info("-----------------测试成功----------------") - return json.dumps(return_data) @route('/yuthon/meter/reading', methods=['POST'], type='json', auth='none', csrf=False) def yuthon_meter_reading(self, **kw): @@ -141,14 +17,11 @@ class EleWaterReading(Controller): :return: { 'code': 编号, - 'property_id': '物业地址' - 'contract_id': '合同' - 'lessee_id': '承租方' 'last_dosage': '上次用量', 'current_meter': '本次用量', 'dosage': '用量', - 'employee_list': [抄表人姓名], - 'meter_type': '抄表类型(电表或水表)', + 'employee_name': 姓名, + 'meter_type': '抄表类型 ('electric', '电表'), ('water', '水表'), } """ electric_records = request.env['property.electric.reading'].search([('reading_type', '=', '待抄')]) @@ -156,40 +29,26 @@ class EleWaterReading(Controller): result_list = [] # 处理电表记录 for record in electric_records: - employee_names = [emp.name for emp in record.employee_ids] - employee_list = ", ".join(employee_names) - record_data = { 'code': record.property_id.code, - 'property_id': record.property_id.name, - 'contract_id': record.contract_id.name, - 'lessee_id': record.contract_id.lessee_id.name, 'last_dosage': record.last_dosage, 'current_meter': record.current_meter, 'dosage': record.dosage, - 'employee_list': employee_list, + 'employee_name': record.employee_id.name, 'meter_type': 'electric', # 添加仪表类型 } result_list.append(record_data) - # 处理水表记录 for record in water_records: - employee_names = [emp.name for emp in record.employee_ids] - employee_list = ", ".join(employee_names) - record_data = { 'code': record.property_id.code, - 'property_id': record.property_id.name, - 'contract_id': record.contract_id.name, - 'lessee_id': record.contract_id.lessee_id.name, 'last_dosage': record.last_dosage, 'current_meter': record.current_meter, 'dosage': record.dosage, - 'employee_list': employee_list, + 'employee_list': record.employee_id.name, 'meter_type': 'water', } result_list.append(record_data) - return_data = { 'data': result_list, 'code': '200', @@ -226,7 +85,6 @@ class EleWaterReading(Controller): message = f"成功更新{meter_type_name}用量: {code}" else: message = f"未找到{meter_type_name}记录: {code}" - return_data = { 'data': {}, 'code': '200', From d4389b820fe7ee19075706cbc5fa690e9a561d99 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 16 Jun 2025 09:31:20 +0800 Subject: [PATCH 2/2] =?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 --- soong_workflow/views/soong_workflow_record.xml | 1 + yuthon_property/wizard/property_statements_wizard.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index a286b5f71..6270080c5 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -10,6 +10,7 @@ string="综合搜索" filter_domain="['|', '|', '|', ('name', 'ilike', self), ('code', 'ilike', self), ('text', 'ilike', self), ('workflow_id.name', 'ilike', self)]"/> + diff --git a/yuthon_property/wizard/property_statements_wizard.py b/yuthon_property/wizard/property_statements_wizard.py index a5aa97c4e..6b53a3a00 100644 --- a/yuthon_property/wizard/property_statements_wizard.py +++ b/yuthon_property/wizard/property_statements_wizard.py @@ -39,7 +39,7 @@ class PropertyStatementsWizard(models.Model): name_account = row[1].value remake = row[2].value original_amount = row[3].value - your_own_account = row[6] + your_own_account = row[6].value cleaned_amount = original_amount.replace(',', '') # 移除逗号 float_amount = float(cleaned_amount) sequence_number = row[5].value