123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- # -*- 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)
|