Форма справки ФНС
This commit is contained in:
@@ -7,7 +7,7 @@ import json
|
||||
import datetime
|
||||
from config import config
|
||||
import requests
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
# Авторизация Google API
|
||||
def authorize_google():
|
||||
@@ -206,6 +206,216 @@ def send_registration_request():
|
||||
|
||||
|
||||
|
||||
|
||||
@webApp.route('/request_patient', methods=['POST'])
|
||||
def request_patient_information():
|
||||
try:
|
||||
|
||||
|
||||
|
||||
data = request.get_json()
|
||||
print(data)
|
||||
user_id = data.get('user_id')
|
||||
# taxpayer_fio = data.get('taxpayer_fio')
|
||||
patient_fio = data.get('patient_fio')
|
||||
|
||||
sheet = authorize_google().open("Пациенты клиники").sheet1
|
||||
records = sheet.get_all_values()
|
||||
|
||||
# Получаем список всех людей с таким user_id
|
||||
birthday_users = [datetime.strptime(row[2], "%Y-%m-%d").strftime("%Y-%m-%dT00:00:00.000Z") for row in records[1:] if row[0] == patient_fio]
|
||||
print(birthday_users)
|
||||
|
||||
|
||||
if not user_id or not patient_fio: #or not taxpayer_fio
|
||||
return "Ошибка: Не выбраны налогоплательщик и пациент", 400
|
||||
|
||||
payload = {
|
||||
"telegram_id": int(user_id),
|
||||
"first_name": patient_fio.split()[1] if len(patient_fio.split()) > 1 else "",
|
||||
"second_name": patient_fio.split()[2] if len(patient_fio.split()) > 2 else "",
|
||||
"last_name": patient_fio.split()[0],
|
||||
"pac_poluchat": "True",
|
||||
"poluchat_status": "",
|
||||
"birthday": birthday_users[0] if birthday_users else None
|
||||
}
|
||||
print(payload)
|
||||
headers = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
|
||||
url = "http://192.168.1.10:8081/AppZaprSvedPac"
|
||||
response = requests.post(url, json=payload, headers=headers)
|
||||
|
||||
if response.status_code == 200:
|
||||
print("Ответ:", response.text)
|
||||
result = response.json
|
||||
print(result)
|
||||
try:
|
||||
result = response.json()
|
||||
except:
|
||||
result = {}
|
||||
|
||||
js_formatted_birthdate = (
|
||||
datetime.strptime(result.get("pct_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%Y-%m-%d")
|
||||
if result.get("pct_birthday") else "")
|
||||
|
||||
formatted_birthdate = (
|
||||
datetime.strptime(result.get("pct_birthday", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%d.%m.%Y")
|
||||
if result.get("pct_birthday") else "")
|
||||
|
||||
formatted_passport_date = (
|
||||
datetime.strptime(result.get("pct_doc_date", ""), "%Y-%m-%dT%H:%M:%S.%fZ").strftime("%d.%m.%Y")
|
||||
if result.get("pct_doc_date") else "")
|
||||
|
||||
return jsonify(
|
||||
user_id=user_id,
|
||||
fio=patient_fio,
|
||||
server_data=result,
|
||||
formatted_birthdate=formatted_birthdate,
|
||||
js_formatted_birthdate=js_formatted_birthdate,
|
||||
formatted_passport_date=formatted_passport_date,
|
||||
pct_doc_ser=result.get('pct_doc_ser', ''),
|
||||
pct_doc_nom=result.get('pct_doc_nom', ''),
|
||||
pct_inn=result.get('pct_inn', ''),
|
||||
pct_email=result.get('pct_email', ''),
|
||||
pct_doc_org_kod=result.get('pct_doc_org_kod', ''),
|
||||
pct_doc_org_name=result.get('pct_doc_org_name', ''),
|
||||
success = True
|
||||
)
|
||||
else:
|
||||
return f"Ошибка: {response.status_code} - {response.text}", 500
|
||||
except Exception as e:
|
||||
return f"Произошла ошибка: {e}", 500
|
||||
|
||||
|
||||
|
||||
@webApp.route('/sending_patient', methods=['POST'])
|
||||
def sending_patient_data():
|
||||
try:
|
||||
raw_data = json.loads(request.data)
|
||||
|
||||
print(raw_data)
|
||||
|
||||
# Разделение ФИО
|
||||
fio = raw_data.get("fio", "")
|
||||
parts = fio.split(" ")
|
||||
if len(parts) < 3:
|
||||
return jsonify({'success': False, "error": "ФИО должно содержать 3 слова"}), 400 # Код 400 - ошибка клиента
|
||||
|
||||
first_name = parts[1]
|
||||
middle_name = " ".join(parts[2:])
|
||||
last_name = parts[0]
|
||||
passport = raw_data.get("passport", "")
|
||||
part = passport.split(" ")
|
||||
pct_doc_ser = part[0]
|
||||
plc_doc_nom = part[1]
|
||||
# Обработка даты рождения
|
||||
dob = raw_data.get("dob", "")
|
||||
if dob:
|
||||
# Преобразуем формат из 2016-09-25 в datetime объект
|
||||
date_obje = datetime.strptime(dob, "%Y-%m-%d")
|
||||
|
||||
# Преобразуем datetime объект в строку в формате ISO 8601
|
||||
pct_birthday = date_obje.strftime("%Y-%m-%dT%H:%M:%S.000Z")
|
||||
pct_inn = raw_data.get("inn", "")
|
||||
formatted_date = raw_data.get("passport_date", "")
|
||||
# Преобразуем строку в объект datetime
|
||||
if formatted_date:
|
||||
# Преобразуем формат из 2016-09-25 в datetime объект
|
||||
date_obj = datetime.strptime(formatted_date, "%Y-%m-%d")
|
||||
|
||||
# Преобразуем datetime объект в строку в формате ISO 8601
|
||||
plc_doc_date = date_obj.strftime("%Y-%m-%dT%H:%M:%S.000Z")
|
||||
plc_doc_org_name = raw_data.get("passport_issued_by", "")
|
||||
plc_doc_org_kod = raw_data.get("postal_code", "")
|
||||
pct_email = raw_data.get("email", "")
|
||||
# Извлекаем список выбранных годов
|
||||
selected_years = raw_data.get('selected_years', [])
|
||||
|
||||
if selected_years:
|
||||
# Преобразуем элементы в целые числа
|
||||
selected_years = list(map(int, selected_years))
|
||||
|
||||
# Находим минимальный и максимальный год
|
||||
year_beg_spr = min(selected_years)
|
||||
year_end_spr = max(selected_years)
|
||||
|
||||
# Если выбран только один год, то обе переменные будут одинаковыми
|
||||
if year_beg_spr == year_end_spr:
|
||||
year_end_spr = year_beg_spr
|
||||
|
||||
# Теперь у нас есть year_beg_spr и year_end_spr
|
||||
print("Минимальный год:", year_beg_spr)
|
||||
print("Максимальный год:", year_end_spr)
|
||||
|
||||
|
||||
# Формируем данные для отправки
|
||||
data1 = {
|
||||
"telegram_id": raw_data.get("user_id"),
|
||||
"pct_first_name": first_name,
|
||||
"pct_second_name": middle_name,
|
||||
"pct_last_name": last_name,
|
||||
"pct_birthday": pct_birthday,
|
||||
"pct_inn": pct_inn,
|
||||
"pct_doc_type": "Паспорт",
|
||||
"pct_doc_ind": 1,
|
||||
"pct_doc_ser": pct_doc_ser,
|
||||
"pct_doc_nom": plc_doc_nom,
|
||||
"pct_doc_date": plc_doc_date,
|
||||
"pct_doc_org_name": plc_doc_org_name,
|
||||
"pct_doc_org_kod": plc_doc_org_kod,
|
||||
"pac_poluchat": "True",
|
||||
"pct_email": pct_email,
|
||||
"year_beg_spr": year_beg_spr,
|
||||
"year_end_spr": year_end_spr
|
||||
}
|
||||
|
||||
print("Отправляемые данные:", data1)
|
||||
|
||||
# Успешный ответ
|
||||
HEADER = {"User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
|
||||
try:
|
||||
response = requests.post("http://192.168.1.10:8081/AppSaveSvedPac", headers=HEADER, json=data1, timeout=5)
|
||||
print("Ответ сервера:", response.text) # вдруг сервер всё же что-то вернёт
|
||||
if response.status_code == 200:
|
||||
return jsonify({'success': True})
|
||||
else:
|
||||
return jsonify({'success': False, 'error': f'Сервер вернул статус {response.status_code}'}), 500
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
return jsonify({'success': False, 'error': f'Ошибка соединения: {str(e)}'}), 500
|
||||
|
||||
except Exception as e:
|
||||
print(f"Ошибка: {e}")
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@webApp.route('/')
|
||||
def main_page_2_0():
|
||||
return render_template('2.0/main_page.pug', user_id=request.args.get('user_id', None))
|
||||
|
||||
|
||||
|
||||
@webApp.route('/fns')
|
||||
def main_page_2_0_fns():
|
||||
try:
|
||||
user_id = request.args.get('user_id')
|
||||
if not user_id:
|
||||
return "Ошибка: не передан user_id", 400
|
||||
|
||||
sheet = authorize_google().open("Пациенты клиники").sheet1
|
||||
records = sheet.get_all_values()
|
||||
|
||||
# Получаем список всех людей с таким user_id
|
||||
matching_users = [row[0] for row in records[1:] if row[3] == user_id]
|
||||
matching_users = sum(matching_users, []) if any(isinstance(i, list) for i in matching_users) else matching_users
|
||||
|
||||
print(matching_users)
|
||||
|
||||
if not matching_users:
|
||||
return "Ошибка: пользователь не найден", 404
|
||||
|
||||
return render_template('2.0/main_page_fns.pug', user_id=user_id, users=matching_users)
|
||||
except Exception as e:
|
||||
return f"Произошла ошибка: {e}", 500
|
||||
|
||||
Reference in New Issue
Block a user