| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import requests
- import datetime
- import pandas as pd
- import os
- import sys
- import django
- import json
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sys.path.append(BASE_DIR)
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bigdataAPI.settings')
- django.setup()
- from apps.PestAnalysis.models import CbdAddrPest, HeNanAddr
- def init_henan_addr():
- json_file = os.path.join(BASE_DIR, 'crond_script', 'henan-data.json')
- with open(json_file, 'r') as f:
- data = json.load(f)
- province = data.get("provinces")
- for p in province:
- cities = p.get("cities")
- for c in cities:
- city = c.get("name")
- code = c.get("code")
- HeNanAddr.objects.get_or_create(
- code = code,
- defaults={
- "province": "河南省",
- "city": city,
- "code": code
- }
- )
- districts = c.get("districts")
- for d in districts:
- HeNanAddr.objects.create(
- province = "河南省",
- city = city,
- district = d.get("name"),
- code = d.get("code")
- )
- def device_info(file_path):
- df = pd.read_excel(file_path)
- device_info = df.to_dict(orient='records')
- return device_info
- def get_cbd_data(devices):
- di = 0
- for device in devices:
- d_id = device.get("id")
- di += 1
- print(di, "+++++", d_id)
- province = device.get("province")
- city = device.get("city")
- district = device.get("district")
- url = "https://web.hnyfwlw.com/api/api_gateway?method=forecast.cbd_analysis.analysis_pest_result"
- data = {
- "d_id": str(d_id),
- "start": "2025-01-01",
- "end": "2025-12-31",
- "offset": 0,
- "model": "B",
- "token": "pXQBKiumY1soyO854pFUfMARZV9pmJ0idqAePsqilVI="
- }
- response = requests.post(url, data=data)
- result = response.json()
- rk_data = result.get("data")
- day = rk_data.get("day")
- pest_title_list = rk_data.get("pest")
- pest_name = rk_data.get("pest_name")
- for index, p in enumerate(pest_name):
- pest_info = pest_title_list[index]
- for dindex, d in enumerate(day):
- if pest_info[dindex]:
- addr_obj = HeNanAddr.objects.filter(city = city, district = district)
- if addr_obj:
- addr_obj = addr_obj.first()
- addr_code = addr_obj.code
- if addr_code:
- cbd_pest_obj = CbdAddrPest.objects.filter(
- format_date=d,
- pest = p,
- province = province,
- city = city,
- district = district,
- addr_code = str(addr_code)
- )
- if cbd_pest_obj:
- cbd_pest_obj = cbd_pest_obj.first()
- org_count = cbd_pest_obj.count
- cbd_pest_obj.count = org_count + pest_info[dindex]
- cbd_pest_obj.save()
- else:
- CbdAddrPest.objects.create(
- date = int(datetime.datetime.strptime(d, "%Y-%m-%d").timestamp()),
- format_date=d,
- pest = p,
- province = province,
- city = city,
- district = district,
- count = pest_info[dindex],
- addr_code = str(addr_code)
- )
- if __name__ == '__main__':
- devices = device_info(f"{BASE_DIR}/crond_script/find_query.xlsx")
- get_cbd_data(devices)
- # init_henan_addr()
-
|