# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import json import logging import requests from apps.web.constant import Const from apps.web.south_intf.bj_north.models import BeiJingFengTai from apps.web.south_intf.bj_north.utils import get_station_info, get_token, get_equipment_info, get_port_normal_info, \ get_order_info, get_port_charge_info, get_port_status from apps.web.device.models import Device logger = logging.getLogger(__name__) # 提交充电站信息 def push_station_info(groupId): try: norther = BeiJingFengTai.objects.filter().first() operatorId = str(norther.operatorId) url = norther.join_url("platform/management/station") stationInfo = get_station_info(groupId,operatorId) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='POST',sig=sig, timeDate=timeDate,token=token,**stationInfo) except Exception as e: logger.exception(e) # 删除充电站信息 def delete_station_info(groupId): try: norther = BeiJingFengTai.objects.filter().first() operatorId = norther.operatorId url = norther.join_url("platform/management/station?stationId={}&operatorId={}".format(groupId,operatorId)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='DELETE',sig=sig, timeDate=timeDate, token=token) except: pass # 修改一个充电站信息 def update_station_info(groupId): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/station") stationInfo = get_station_info(groupId) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='PUT',sig=sig, timeDate=timeDate,token=token,**stationInfo) except Exception as e: logger.exception(e) # 分页查询多个充电站信息列表 def get_stations_info(groupId,pageIndex,pageSize): try: norther = BeiJingFengTai.objects.filter().first() operatorId = norther.operatorId url = norther.join_url("platform/management/station?operatorId={}&pageIndex={}&pageSize={}"\ .format(operatorId,pageIndex,pageSize)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='GET', sig=sig, timeDate=timeDate, token=token) except: pass # 提交一个充电设施信息 def push_device_info(devNo): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/equipment") devInfo = get_equipment_info(devNo,str(norther.operatorId)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='POST',sig=sig, timeDate=timeDate,token=token,**devInfo) except Exception as e: logger.exception(e) # 修改一个充电设施信息 def update_device_info(devNo): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/equipment") devInfo = get_equipment_info(devNo,str(norther.operatorId)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='PUT',sig=sig, timeDate=timeDate,token=token,**devInfo) except Exception as e: logger.exception(e) # 分页查询多个充电设施信息列表 def get_devices_info(devNo,pageIndex,pageSize): try: norther = BeiJingFengTai.objects.filter().first() operatorId = norther.operatorId url = norther.join_url("platform/management/equipment?operatorId={}&pageIndex={}&pageSize={}"\ .format(operatorId,pageIndex,pageSize)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='GET', sig=sig, timeDate=timeDate, token=token) except: pass # 提交一个充电口信息 def push_port_info(devNo, port): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/cell") portInfo = get_port_normal_info(devNo, port,str(norther.operatorId)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='POST',sig=sig, timeDate=timeDate,token=token,**portInfo) except Exception as e: logger.exception(e) # 删除一个充电口信息 def delete_port_info(devNo, port): cellId = Device.get_logicalCode_by_devNo(devNo) + '_' + str(port) try: norther = BeiJingFengTai.objects.filter().first() operatorId = norther.operatorId url = norther.join_url("platform/management/cell?cellId={}id&operatorId={}".format(cellId,operatorId)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='DELETE',sig=sig, timeDate=timeDate, token=token) except: pass # 修改一个充电口信息 def update_port_info(devNo,port): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/cell") portInfo = get_port_normal_info(devNo, port,str(norther.operatorId)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='PUT',sig=sig, timeDate=timeDate,token=token,**portInfo) except Exception as e: logger.exception(e) # 分页查询多个充电口信息列表 def get_ports_info(pageIndex,pageSize): try: norther = BeiJingFengTai.objects.filter().first() operatorId = norther.operatorId url = norther.join_url("platform/management/cell?operatorId={}&pageIndex={}&pageSize={}"\ .format(operatorId,pageIndex,pageSize)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='GET', sig=sig, timeDate=timeDate, token=token) except: pass # 修改上报失败回调地址 # 删除上报失败回调地址 # (运营商实现该接口)处理上报失败 def update_fault_proce(request): data = request.data payload = json.dumps(data) try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("/example/handleReportFailure") token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='POST', sig=sig, timeDate=timeDate, token=token, **payload) except Exception as e: logger.exception(e) # 修改查询充电口实时数据回调地址 # 修改请求上报充电过程数据地址 # (运营商实现该接口)处理请求上报充电过程数据 # 上报充电口实时信息 def post_charging_meta_info(devNo, port): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/report/chargingMetaInfo") token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) operatorId = norther.operatorId chargingMetaInfo = get_port_charge_info(devNo, port,operatorId) return norther.send_request(url=url, mode='POST', sig=sig, timeDate=timeDate, token=token, **chargingMetaInfo) except Exception as e: logger.exception(e) # 重新上报充电口实时信息 # 批量上报充电口实时信息 def post_charging_meta_info_list(devNo): try: workingPortList = [] devCache = Device.get_dev_control_cache(devNo) for k,v in devCache.items(): if isinstance(v, dict): if 'status' in v: if v['status'] == Const.DEV_WORK_STATUS_WORKING: workingPortList.append(k) for port in workingPortList: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/report/chargingMetaInfo") token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate, token) operatorId = norther.operatorId chargingMetaInfo = get_port_charge_info(devNo, port, operatorId) norther.send_request(url=url, mode='POST', sig=sig, timeDate=timeDate, token=token, **chargingMetaInfo) except Exception as e: logger.exception(e) # 提交一个充电记录信息 def post_charging_record_info(orderNo): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/chargingRecord") token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) operatorId = str(norther.operatorId) orderInfo = get_order_info(orderNo,operatorId) return norther.send_request(url=url, mode='POST', sig=sig, timeDate=timeDate, token=token, **orderInfo) except Exception as e: logger.exception(e) # 分页查询多个充电记录信息列表 def get_charging_record_info(pageIndex,pageSize): try: norther = BeiJingFengTai.objects.filter().first() operatorId = norther.operatorId url = norther.join_url("platform/management/chargingRecord?operatorId={}&pageIndex={}&pageSize={}"\ .format(operatorId,pageIndex,pageSize)) token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) return norther.send_request(url=url, mode='GET', sig=sig, timeDate=timeDate, token=token) except: pass # 提交充电记录信息列表 def post_charging_records_info(orderNos): try: norther = BeiJingFengTai.objects.filter().first() url = norther.join_url("platform/management/chargingRecordList") token = get_token(norther) timeDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sig = norther.make_signature(timeDate,token) operatorId = norther.operatorId orderInfos = [] for orderNo in orderNos: orderInfo = get_order_info(orderNo, operatorId) orderInfos.append(orderInfo) # return norther.send_request(url=url, mode='POST', sig=sig, timeDate=timeDate, token=token, orderInfos) headers = { 'Datetime': timeDate, 'OperatorId': operatorId, 'Token': token, 'Signature': sig, 'User-Agent': 'Apifox/1.0.0 (https://www.apifox.cn)', 'Content-Type': 'application/json' } payload = json.dumps(orderInfos) response = requests.request("POST", url, headers=headers, data=payload) if response.status_code != 200: return dict() return response.json() except Exception as e: logger.exception(e) # 修改安全预警回调地址 # (桩企实现)安全预警接口举例 # 跟新每个接口的状态 def get_update_port_num(devNo): workingPorts = get_port_status(devNo) for port in workingPorts: update_port_info(devNo,port)