فهرست منبع

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into peng

peng 2 سال پیش
والد
کامیت
44530e2d18

+ 1 - 1
Ansjer/urls.py

@@ -25,7 +25,7 @@ from Controller import FeedBack, EquipmentOTA, EquipmentInfo, AdminManage, AppIn
     DeviceLogController, CouponController, AiController, ShadowController, SuperPasswordTool
     DeviceLogController, CouponController, AiController, ShadowController, SuperPasswordTool
 from Controller.Cron import CronTaskController
 from Controller.Cron import CronTaskController
 from Controller.MessagePush import EquipmentMessagePush
 from Controller.MessagePush import EquipmentMessagePush
-from Controller.SensorGateway import SensorGatewayController, EquipmentFamilyController, SmartSocketStatisticsController
+from Controller.SensorGateway import SensorGatewayController, EquipmentFamilyController
 from Controller.Surveys import CloudStorageController
 from Controller.Surveys import CloudStorageController
 from Controller.UserDevice import UserDeviceShareController
 from Controller.UserDevice import UserDeviceShareController
 
 

+ 2 - 0
Controller/RegionController.py

@@ -332,6 +332,8 @@ class RegionView(View):
                 country_qs = country_qs.annotate(api=F('country__region__zosi_api'))
                 country_qs = country_qs.annotate(api=F('country__region__zosi_api'))
             elif 'Loocam' in app_name:
             elif 'Loocam' in app_name:
                 country_qs = country_qs.annotate(api=F('country__region__loocam_api'))
                 country_qs = country_qs.annotate(api=F('country__region__loocam_api'))
+            elif '新中性' in app_name:
+                country_qs = country_qs.annotate(api=F('country__region__neutral_api'))
             else:
             else:
                 country_qs = country_qs.annotate(api=F('country__region__api'))
                 country_qs = country_qs.annotate(api=F('country__region__api'))
             country_qs = country_qs.values('country_id', 'country_name', 'api', 'push_api').order_by('country_id')
             country_qs = country_qs.values('country_id', 'country_name', 'api', 'push_api').order_by('country_id')

+ 18 - 7
Controller/SensorGateway/SmartSocketController.py

@@ -77,10 +77,13 @@ class SmartSocketView(View):
 
 
     @classmethod
     @classmethod
     def save_power_statistics(cls, request_dict, response):
     def save_power_statistics(cls, request_dict, response):
+        """
+        保存设备上报电量统计
+        """
         try:
         try:
             serial_number = request_dict.get('serialNumber', None)
             serial_number = request_dict.get('serialNumber', None)
             electricity = request_dict.get('electricity', 0.00)
             electricity = request_dict.get('electricity', 0.00)
-            power = request_dict.get('power', None)
+            power = request_dict.get('power', 0.00)
             accumulated_time = request_dict.get('accumulatedTime', None)
             accumulated_time = request_dict.get('accumulatedTime', None)
             device_time = request_dict.get('deviceTime', None)
             device_time = request_dict.get('deviceTime', None)
             LOGGER.info('{}上报电量统计data:{}'.format(serial_number, request_dict))
             LOGGER.info('{}上报电量统计data:{}'.format(serial_number, request_dict))
@@ -88,13 +91,13 @@ class SmartSocketView(View):
                 return response.json(444)
                 return response.json(444)
             device_time = int(device_time)
             device_time = int(device_time)
             electricity = Decimal(electricity).quantize(Decimal("0.00"))
             electricity = Decimal(electricity).quantize(Decimal("0.00"))
-            power = int(power)
+            power = Decimal(power).quantize(Decimal("0.00"))
             accumulated_time = int(accumulated_time)
             accumulated_time = int(accumulated_time)
             now_time = int(time.time())
             now_time = int(time.time())
             start_time, end_time = LocalDateTimeUtil.get_today_date(True)
             start_time, end_time = LocalDateTimeUtil.get_today_date(True)
-            # 设备当前统计时间,查询电量统计记录 设备时间大于创建记录时间、并且创建记录时间小于当天结束时间
+            # 查询当前序列号当天是否有上传过电量统计
             power_qs = SocketPowerStatistics.objects.filter(serial_number=serial_number,
             power_qs = SocketPowerStatistics.objects.filter(serial_number=serial_number,
-                                                            created_time__gt=device_time,
+                                                            created_time__gt=start_time,
                                                             created_time__lte=end_time)
                                                             created_time__lte=end_time)
             data = {
             data = {
                 'electricity': electricity,
                 'electricity': electricity,
@@ -102,15 +105,16 @@ class SmartSocketView(View):
                 'accumulated_time': accumulated_time,
                 'accumulated_time': accumulated_time,
                 'updated_time': now_time
                 'updated_time': now_time
             }
             }
-            if not power_qs.exists():
+            if not power_qs.exists():  # 添加插座上报电量统计
                 socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number).values('device_id')
                 socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number).values('device_id')
                 if not socket_info_qs.exists():
                 if not socket_info_qs.exists():
                     return response.json(173)
                     return response.json(173)
                 data['device_id'] = socket_info_qs[0]['device_id']
                 data['device_id'] = socket_info_qs[0]['device_id']
-                data['created_time'] = now_time
+                data['created_time'] = device_time
                 data['serial_number'] = serial_number
                 data['serial_number'] = serial_number
                 SocketPowerStatistics.objects.create(**data)
                 SocketPowerStatistics.objects.create(**data)
                 return response.json(0)
                 return response.json(0)
+            # 更新当天电量统计
             power_qs.update(**data)
             power_qs.update(**data)
             return response.json(0)
             return response.json(0)
         except Exception as e:
         except Exception as e:
@@ -263,7 +267,7 @@ class SmartSocketView(View):
             task_id = request_dict.get('taskId', None)
             task_id = request_dict.get('taskId', None)
             device_switch = request_dict.get('deviceSwitch', None)
             device_switch = request_dict.get('deviceSwitch', None)
             task_switch = request_dict.get('taskSwitch', None)
             task_switch = request_dict.get('taskSwitch', None)
-            if not all([task_type, start_time, repeat, device_switch, task_switch]):
+            if not all([task_type, start_time, end_time, repeat, device_switch, task_switch]):
                 return response.json(444)
                 return response.json(444)
             device_switch = int(device_switch)
             device_switch = int(device_switch)
             task_switch = int(task_switch)
             task_switch = int(task_switch)
@@ -282,6 +286,13 @@ class SmartSocketView(View):
                 data['updated_time'] = now_time
                 data['updated_time'] = now_time
                 socket_schedule_qs.update(**data)
                 socket_schedule_qs.update(**data)
             else:
             else:
+                # 排查是否已设置过当前排程
+                socket_s_qs = SocketSchedule.objects.filter(device_id=device_id,
+                                                            start_time=int(start_time),
+                                                            end_time=int(end_time),
+                                                            time_type=int(task_type))
+                if socket_s_qs.exists():
+                    return response.json(174)
                 # 添加排程
                 # 添加排程
                 data['device_id'] = device_id
                 data['device_id'] = device_id
                 data['serial_number'] = serial_number
                 data['serial_number'] = serial_number

+ 0 - 300
Controller/SensorGateway/SmartSocketStatisticsController.py

@@ -1,300 +0,0 @@
-import operator
-import time
-import datetime
-
-from django.db import transaction
-from django.forms import model_to_dict
-from django.http import JsonResponse
-from django.views import View
-
-from Model.models import SocketPowerStatistics, SocketInfo, Device_User, Device_Info, SocketSchedule, \
-    CompanySerialModel, UIDCompanySerialModel, SocketRecordsLog, UidSetModel
-from Object.ResponseObject import ResponseObject
-from Service.CommonService import CommonService
-
-
-class SmartSocketStatisticsView(View):
-    def get(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        operation = kwargs.get('operation')
-        return self.validation(request.GET, request, operation)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        operation = kwargs.get('operation')
-        return self.validation(request.POST, request, operation)
-
-    def validation(self, request_dict, request, operation):
-        token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
-        if token_code != 0:
-            return response.json(token_code)
-        elif operation == 'get-today-scene':  # 查询当天插座电量
-            return self.get_today_scene(request_dict, response)
-        elif operation == 'get-all-scene':  # 统计智能插座电量
-            return self.get_all_scene(request_dict, response)
-        elif operation == 'get-socket-schedule':  # 智能插座排程记录查询
-            return self.get_socket_schedule(request_dict, response)
-        elif operation == 'get-log':  # 智能插座开关日志记录查询
-            return self.get_log(request_dict, response, user_id)
-        elif operation == 'editor-socket-device':  # 编辑设备信息
-            return self.editor_socket_device(request_dict, response, user_id)
-        else:
-            return response.json(414)
-
-    @staticmethod
-    def get_today_scene(request_dict, response):
-        """
-        查询当天插座电量
-        @request_dict serialNumber: 序列号
-        @param request_dict: 请求数据
-        @param response: 响应
-        @return: response
-        """
-        serial_number = request_dict.get('serialNumber', None)
-        if not all([serial_number]):
-            return response.json(444)
-        socket_power_qs = SocketPowerStatistics.objects.filter(serial_number=serial_number).values('power',
-                                                                                                   'accumulated_time',
-                                                                                                   'electricity')
-        if not socket_power_qs.exists():
-            return response.json(173)
-        socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number).values('status', 'online',
-                                                                                       'count_down_time')
-        if not socket_info_qs.exists():
-            return response.json(173)
-        try:
-            data = {}
-            data['serialNumber'] = serial_number
-            data['power'] = socket_power_qs[0]['power'] if socket_power_qs[0]['power'] else 0.00
-            data['electricity'] = socket_power_qs[0]['electricity'] if socket_power_qs[0]['electricity'] else 0.00
-            data['accumulatedTime'] = socket_power_qs[0]['accumulated_time'] if socket_power_qs[0][
-                'accumulated_time'] else '0:00'
-            data['status'] = socket_info_qs[0]['status'] if socket_info_qs[0]['status'] else False
-            data['online'] = socket_info_qs[0]['online'] if socket_info_qs[0]['online'] else False
-            data['count_down_time'] = socket_info_qs[0]['count_down_time'] if socket_info_qs[0][
-                'count_down_time'] else '00:00:00'
-            return response.json(0, data)
-        except Exception as e:
-            print(e)
-            return response.json(500)
-
-    @classmethod
-    def get_all_scene(cls, request_dict, response):
-        '''
-        统计智能插座电量
-        @request_dict serialNumber: 序列号
-        @request_dict unit: 时间单位
-        @param request_dict: 请求数据
-        @param response: 响应
-        @return: response
-        '''
-        serial_number = request_dict.get('serialNumber', None)
-        unit = request_dict.get('unit', None)
-        # 确定是否会传值
-        startTime = request_dict.get('startTime', None)
-        endTime = request_dict.get('endTime', None)
-        if not all([unit, serial_number]):
-            return response.json(444)
-        socket_power_qs = SocketPowerStatistics.objects.filter(serial_number=serial_number).values(
-                    'electricity', 'accumulated_time', 'power')
-        if not socket_power_qs.exists():
-            return response.json(173)
-        data = {}
-        # for device_info in device_info_qs:
-        #     device_id = device_info['id']
-        #     device_list.append(device_id)
-        try:
-            data = {
-                'electricityToday': '',
-                'accumulated_time': '',
-                'power': '',
-                'electricityYesterday': '',
-                'electricityMonth': '',
-                'allElectricity': '',
-                'accumulatedTime': '',
-                'accumulatedPower': '',
-                }
-            nowTime = endTime
-            data['electricity'] = socket_power_qs[0]['electricity'] if socket_power_qs[0]['electricity'] else 0.00
-            # 昨天使用电量
-            # data['electricityYesterday'] = socket_power_qs[1]['electricity'] if socket_power_qs[1][
-            #     'electricity'] else 0.00
-            data['accumulated_time'] = socket_power_qs[0]['accumulated_time'] if socket_power_qs[0][
-                'accumulated_time'] else 0.00
-            data['power'] = socket_power_qs[0]['power'] if socket_power_qs[0]['power'] else 0.00
-            time_list = []
-            if not endTime:
-                nowTime = 1679241600
-            if unit == 'week':
-                startTime = startTime
-                if not startTime:
-                    startTime = datetime.datetime.fromtimestamp(int(nowTime)) - datetime.timedelta(days=7)
-                end_time = datetime.datetime.fromtimestamp(int(nowTime))
-                time_list = CommonService.cutting_time(startTime, end_time, time_unit='day')
-            elif unit == 'month':
-                startTime = startTime
-                if not startTime:
-                    startTime = datetime.datetime.fromtimestamp(int(nowTime)) - datetime.timedelta(days=30)
-                end_time = datetime.datetime.fromtimestamp(int(nowTime))
-                time_list = CommonService.cutting_time(startTime, end_time, time_unit='day')
-            elif unit == 'year':
-                startTime = startTime
-                if not startTime:
-                    startTime = datetime.datetime.fromtimestamp(int(nowTime)) - datetime.timedelta(days=365)
-                end_time = datetime.datetime.fromtimestamp(int(nowTime))
-                time_list = CommonService.cutting_time(startTime, end_time, time_unit='month')
-            # all_time_list = []
-            new_list = []
-            for item in time_list:
-                socket_power_qs = socket_power_qs.filter(created_time__gte=item[0], created_time__lt=item[1])
-                time_tuple = time.localtime(item[-1])  # 把时间戳转换成时间元祖
-                items = time.strftime('%Y-%m-%d', time_tuple)
-                electricity = 0.00
-                new_list.append({
-                    'time': items,
-                    'electricity': electricity
-                })
-                # #字典key相同则value放一起
-                # socket_list = list(socket_power_qs)
-                # new_list.append(socket_list[0])
-                # for socket in range(1,len(socket_list)):
-                #     for new in new_list:
-                #         if operator.eq(new.keys(), socket_list[socket].keys()):
-                #             for key in new.keys():
-                #                 new[key] += socket_list[socket][key]
-                #             break
-                #         elif operator.eq(new, new_list[-1]):
-                #             new_list.append(socket_list[socket])
-                #             break
-            # data['dict'] = new_list
-            data['week_or_month_or_year'] = new_list
-            return response.json(0, data)
-        except Exception as e:
-            print(e)
-            return response.json(500)
-
-    @staticmethod
-    def get_socket_schedule(request_dict, response):
-        """
-        智能插座排程记录查询
-        @param request_dict: 请求参数
-        @request_dict page: 页数
-        @request_dict size: 条数
-        @request_dict serialNumber: 设备序列号
-        @param response: 响应对象
-        @return: response
-        """
-        page = request_dict.get('pageNo', None)
-        size = request_dict.get('pageSize', None)
-        serial_number = request_dict.get('serialNumber', None)
-
-        if not all([page, size, serial_number]):
-            return response.json(444)
-        page, size = int(page), int(size)
-        socket_schedule_qs = SocketSchedule.objects.filter(serial_number=serial_number).values('switch_status',
-                                                                                               'start_time', 'end_time',
-                                                                                               'repeat', 'task_status')
-        count = socket_schedule_qs.count()
-        socket_schedule_qs = socket_schedule_qs[(page - 1) * size:page * size]
-        if not socket_schedule_qs.exists():
-            return response.json(173)
-        try:
-            schedule_list = []
-            for socket_schedule in socket_schedule_qs:
-                schedule_list.append({
-                    'start_time': socket_schedule['start_time'],
-                    'end_time': socket_schedule['end_time'],
-                    'switch_status': socket_schedule['switch_status'] if socket_schedule['switch_status'] else False,
-                    'task_status': socket_schedule['task_status'] if socket_schedule['task_status'] else False,
-                    # 需转换进制
-                    'repeat': socket_schedule['repeat']
-                })
-            return response.json(0, {'list': schedule_list, 'total': count})
-        except Exception as e:
-            print(e)
-            return response.json(500)
-
-    @staticmethod
-    def get_log(request_dict, response, user_id):
-        """
-        智能插座开关日志记录查询
-        @param request_dict: 请求参数
-        @param user_id: 用户ID
-        @request_dict page: 页数
-        @request_dict size: 条数
-        @request_dict serialNumber: 设备序列号
-        @request_dict startTime: 开始时间
-        @request_dict endTime: 结束时间
-        @param response: 响应对象
-        @return: response
-        """
-        page = request_dict.get('pageNo', None)
-        size = request_dict.get('pageSize', None)
-        serial_number = request_dict.get('serialNumber', None)
-        start_time = request_dict.get('startTime', None)
-        end_time = request_dict.get('endTime', None)
-
-        if not all([page, size, serial_number]):
-            return response.json(444)
-
-        socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number)
-        device_id_list = []
-        pass
-
-    @staticmethod
-    def editor_socket_device(request_dict, response, user_id):
-        """
-        编辑设备
-        """
-        # 编辑插座信息
-        serial_number = request_dict.get('serialNumber', None)
-        NickName = request_dict.get('NickName', None)
-        #room_save
-        # familyRoom = request_dict.get('familyRoom', None)
-        type_switch = request_dict.get('typeSwitch', None)  # 1:倒计时开关
-        status = request_dict.get('status', None)  # 开关状态 0:关闭,1:开启'
-
-        # 编辑插座排程
-        count_down_time = request_dict.get('countDownTime', None)  # 倒计时时间戳
-        time_type = request_dict.get('timeType', None)  # 排查时间类型 0:按时间 1:按时间段划分'
-        switch_status = request_dict.get('switchStatus', None)  # 开关状态 0:关闭,1:开启
-        start_time = request_dict.get('startTime', None)
-        end_time = request_dict.get('endTime', None)
-        repeat = request_dict.get('repeat', None)  # 重复周期用数值表示
-
-        if not all([serial_number]):
-            return response.json(444)
-        socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number)
-        if not socket_info_qs.exists():
-            return response.json(173)
-        try:
-            with transaction.atomic():
-                if NickName:
-                    Device_Info.objects.update(NickName=NickName)
-                    UidSetModel.objects.update(nickname=NickName)
-                elif type_switch:
-                    socket_info_qs.update(type_switch=type_switch)
-                elif status:
-                    socket_info_qs.update(status=status)
-                elif count_down_time:
-                    socket_info_qs.update(count_down_time=count_down_time)
-                socket_qs = SocketSchedule.objects.filter(serial_number=serial_number)
-                if not socket_qs.exists():
-                    socket_info_qs.save()
-                    return response(0)
-                elif time_type:
-                    socket_qs.update(time_type=time_type)
-                elif switch_status:
-                    socket_qs.update(switch_status=switch_status)
-                elif start_time:
-                    socket_qs.update(start_time=start_time)
-                elif end_time:
-                    socket_qs.update(end_time=end_time)
-                elif repeat:
-                    socket_qs.update(repeat=repeat)
-                socket_info_qs.save()
-                socket_qs.save()
-                return response.json(0)
-        except Exception as e:
-            print(e)
-            return response.json(500)

+ 1 - 18
Model/models.py

@@ -1995,6 +1995,7 @@ class RegionModel(models.Model):
     api = models.CharField(max_length=50, default='', verbose_name='域名')
     api = models.CharField(max_length=50, default='', verbose_name='域名')
     zosi_api = models.CharField(max_length=50, default='', verbose_name='周视域名')
     zosi_api = models.CharField(max_length=50, default='', verbose_name='周视域名')
     loocam_api = models.CharField(max_length=50, default='', verbose_name='录看域名')
     loocam_api = models.CharField(max_length=50, default='', verbose_name='录看域名')
+    neutral_api = models.CharField(max_length=50, default='', verbose_name='中性域名')
     push_api = models.CharField(max_length=50, default='', verbose_name='推送域名')
     push_api = models.CharField(max_length=50, default='', verbose_name='推送域名')
 
 
     class Meta:
     class Meta:
@@ -3433,21 +3434,3 @@ class SocketSchedule(models.Model):
         verbose_name = '插座排程'
         verbose_name = '插座排程'
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
 
 
-
-class SocketRecordsLog(models.Model):
-    id = models.AutoField(primary_key=True, verbose_name='自增id')
-    user_id = models.CharField(default='', db_index=True, max_length=32, verbose_name=u'用户id')
-    serial_number = models.CharField(db_index=True, max_length=20, default='',
-                                     verbose_name='序列号')
-    records_type = models.SmallIntegerField(default=0,
-                                            verbose_name='记录类型 0:设备开关 1:插座日志')
-    content = models.CharField(max_length=128, blank=True, verbose_name='记录内容')
-    status = models.SmallIntegerField(default=0, verbose_name='0:未读/未操作,1:已读/已操作')
-    created_time = models.IntegerField(default=0, verbose_name='创建时间')
-    updated_time = models.IntegerField(default=0, verbose_name='更新时间')
-
-    class Meta:
-        db_table = 's_socket_records_log'
-        verbose_name = '插座日志记录'
-        verbose_name_plural = verbose_name
-        app_label = "PushModel"