diff --git a/yuthon_hr_attendance/controllers/applet_attendance.py b/yuthon_hr_attendance/controllers/applet_attendance.py index beae75b19..6ce5557c3 100644 --- a/yuthon_hr_attendance/controllers/applet_attendance.py +++ b/yuthon_hr_attendance/controllers/applet_attendance.py @@ -889,6 +889,87 @@ class AppletAttendance(Controller): 'water': water_result, }) + + # 获取楼层列表 + @route('/yuthon/meter/reading/floor', methods=['POST'], type='http', auth='none', cors='*', csrf=False) + def yuthon_meter_reading_floor(self, **kw): + ''' + 获取楼层列表 + ''' + result = request.env['yuthon.epitope.values'].sudo().search_read( [], fields=['name','type']) + return json.dumps(result) + + # 根据楼层,状态(reading, unreading) 类型, 获取 列表数据 + @route('/yuthon/meter/reading/list', methods=['POST'], type='http', auth='none', cors='*', csrf=False) + def yuthon_meter_reading_list(self, **kw): + reading_state = kw.get('state') + type = kw.get('type') + floor_id = int(kw.get('floor_id')) + + today = datetime.now() + first_day = today.replace(day=1, hour=0, minute=0, second=0, microsecond=0) + last_day = (today.replace(day=1) + timedelta(days=32)).replace(day=1) - timedelta(days=1) + last_day = last_day.replace(hour=23, minute=59, second=59, microsecond=999999) + + first_day_str = first_day.strftime('%Y-%m-%d') + last_day_str = last_day.strftime('%Y-%m-%d') + + domain = [('state', '=', reading_state), + ('epitope_values_id', '=', floor_id), + ('meter_date', '>=', first_day_str), + ('meter_date', '<=', last_day_str) ] + + if type == 'electric': + domain.append( ('archives_state', '!=', 'stop')) + model = 'meter.archives.line' + else: + domain.append(('water_state', '!=', 'stop')) + model = 'meter.water.line' + print(domain) + records = request.env[model].sudo().search(domain) + + result = [] + for record in records: + property_infos = record.yuthon_property_ids if record.yuthon_property_ids else [None] + + for property_info in property_infos: + # 处理空物业信息的情况,所有关联字段设为空 + if property_info: + building = '天河商贸大厦' + floor = record.epitope_values_id.name if record.epitope_values_id else '' + room = property_info.units or '' + address = property_info.name or '' + employee_name = property_info.lessee_id.name if property_info.lessee_id else '' + else: + building = '天河商贸大厦' + floor = record.epitope_values_id.name if record.epitope_values_id else '' + room = '' + address = '' + employee_name = '' + state = record.state + tvalue = { + 'id': record.id, + 'code': record.water_id.name if type == 'water' else record.archives_id.name, + 'last_dosage': record.last_dosage or 0, + 'mater_data': str(record.meter_date) if record.meter_date else '', + 'last_mater_data': str(record.last_meter) if record.last_meter else '', + 'meter_type': state, + 'employee_name': employee_name, + 'address': address, + 'building': building, + 'floor': floor, + 'room': room, + 'epitope_values':record.epitope_values_id.name, + 'unit_number':record.unit_number, + 'state': record.state, # 状态 reading unreading + 'last_read': record.last_read, + } + result.append(tvalue) + + + return json.dumps(result) + + @route('/yuthon/meter/dosage', methods=['POST'], type='http', auth='none', cors='*', csrf=False) def yuthon_meter_dosage(self, **kw): """ @@ -1020,6 +1101,7 @@ class AppletAttendance(Controller): 'code': '200', 'message': '成功' }) + @route('/yuthon/wifi/message/create', methods=['POST'], type='http', auth='none', cors='*', csrf=False) def yuthon_wifi_message_create(self, **kwargs): # mac, name, bssid, company_id