Ejemplo n.º 1
0
 def get(self, *args, **kwargs):
     """
     get请求: 通过工厂id和班次id获取班次的详细信息
     :param args:
     :param kwargs: /factory_id/schedule_id
     :return: 成功返回班次的信息,未找到数据返回status_24
              参数错误返回status_22
     """
     # api日志记录
     SpiderApi.request(kwargs['c_user_id'], self.request.remote_ip, self.request.method,
                       self.request.uri)
     parameter = kwargs['parameter']
     parameter_list = parameter.split('/')
     if len(parameter_list) == 2:
         factory_id = parameter_list[0]
         schedule_id = parameter_list[1]
         schedule_obj = WorkScheduleDB(factory_id=factory_id)
         result = schedule_obj.find(id=schedule_id)
         schedule_obj.close()
         if result:
             SpiderApi.response(200)
             self.write_json(result)
         else:
             SpiderApi.response(errors.status_24)
             raise HTTPError(**errors.status_24)
     else:
         SpiderApi.response(errors.status_22)
         raise HTTPError(**errors.status_22)
Ejemplo n.º 2
0
 def post(self, *args, **kwargs):
     """
     post请求,通过设备编号和工厂id获取设备的历史信息
     :param args:
             group_id: 班组id ,全选为None
             start_time: 开始时间
             end_time: 结束时间
             search_field: 查找字段
             equipment_id: 设备id
     :param kwargs: /factory_id/factory_number
     :return: 成功返回201以及包含警报信息的json,为请求到数据返回status_24
              参数错误返回status_22,设备未绑定班次返回status_38
     """
     # api日志记录
     SpiderApi.request(kwargs['c_user_id'], self.request.remote_ip,
                       self.request.method, self.request.uri)
     parameter = kwargs['parameter']
     parameter_list = parameter.split('/')
     request_data = kwargs['request_data']
     group_id = request_data.get('group_id')
     start_time = request_data.get('start_time')
     end_time = request_data.get('end_time')
     search_field = request_data.get('search_field')
     equipment_id = request_data.get('equipment_id')
     factory_id = parameter_list[0]
     factory_number = parameter_list[1]
     # 对查询的参数进行判断
     if search_field not in ALLOWED_PARA:
         SpiderApi.response(errors.status_37)
         raise HTTPError(**errors.status_37)
     if len(parameter_list
            ) == 2 and start_time and end_time and search_field:
         # 对时间间隔进行处理
         start_time_list = map(int, start_time.split("-"))
         end_time_list = map(int, end_time.split("-"))
         start_datetime = datetime.datetime.combine(
             datetime.date(start_time_list[0], start_time_list[1],
                           start_time_list[2]), datetime.time.min)
         end_datetime = datetime.datetime.combine(
             datetime.date(end_time_list[0], end_time_list[1],
                           end_time_list[2]), datetime.time.min)
         # 读取中间表获取数据
         # 首先要对时间进行区间和是否选择班次进行判断 大于30天 去每日报表查找,小于30天,去生产数据查找
         time_interval = end_datetime - start_datetime
         if time_interval >= datetime.timedelta(30):
             if group_id:
                 # 去班组报表中查询
                 group_report_obj = GroupReportDB(factory_id=factory_id,
                                                  equipment_id=equipment_id)
                 result = group_report_obj.get_group_rep_data(
                     group_id=group_id,
                     start_time=start_datetime,
                     end_time=end_datetime,
                     field=search_field)
                 group_report_obj.close()
             else:
                 # 去每日报表查询
                 daily_report_obj = DailyReportDB(factory_id=factory_id,
                                                  equipment_id=equipment_id)
                 result = daily_report_obj.get_daily_rep_data(
                     start_time=start_datetime,
                     end_time=end_datetime,
                     field=search_field)
                 daily_report_obj.close()
         else:
             # 获取班组绑定的班次
             schedule_obj = WorkScheduleDB(factory_id=factory_id)
             schedule = schedule_obj.find(group_id=group_id)
             schedule_obj.close()
             # 对查找的设备id进行校验,判断是否传班组id,判断是否绑定了班次
             if schedule is None and group_id:
                 SpiderApi.response(errors.status_38)
                 raise HTTPError(**errors.status_38)
             if group_id:
                 # 对时间进行处理
                 start_list = map(int, schedule['start_time'].split(":"))
                 end_list = map(int, schedule['end_time'].split(":"))
                 start_datetime += datetime.timedelta(hours=start_list[0],
                                                      minutes=start_list[1],
                                                      microseconds=1)
                 end_datetime += datetime.timedelta(hours=end_list[0],
                                                    minutes=end_list[1],
                                                    microseconds=1)
             # 去生产数据中查询,班次所绑定班次的记录
             product_data_obj = ProductData(factory_number=factory_number,
                                            factory_id=factory_id)
             result = product_data_obj.get_product_data(
                 field=search_field,
                 start_time=start_datetime,
                 end_time=end_datetime)
             product_data_obj.close()
         if result:
             SpiderApi.response(201)
             self.write_json(result, 201)
         else:
             SpiderApi.response(errors.status_24)
             raise HTTPError(**errors.status_24)
     else:
         SpiderApi.response(errors.status_22)
         raise HTTPError(**errors.status_22)