Commit 77b6b2ff authored by xianyang's avatar xianyang

账户列表,导出接口

parent 4fe1640e
from datetime import datetime from datetime import datetime
import pandas as pd
from sqlalchemy import and_ from sqlalchemy import and_
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.api.account import schemas from app.api.account import schemas
...@@ -94,7 +94,7 @@ def update_account_info(db: Session, old_data): ...@@ -94,7 +94,7 @@ def update_account_info(db: Session, old_data):
db.commit() db.commit()
def get_finance_info(db, data): def get_finance_info(db, data, is_list=None):
"""账户财务信息""" """账户财务信息"""
finance_condition = [] finance_condition = []
finance_condition.append(AccountFinance.account_id == data.aid) finance_condition.append(AccountFinance.account_id == data.aid)
...@@ -102,16 +102,22 @@ def get_finance_info(db, data): ...@@ -102,16 +102,22 @@ def get_finance_info(db, data):
finance_condition.append(AccountFinance.create_time >= data.start_time) finance_condition.append(AccountFinance.create_time >= data.start_time)
if data.end_time: if data.end_time:
finance_condition.append(AccountFinance.create_time <= data.end_time) finance_condition.append(AccountFinance.create_time <= data.end_time)
if not finance_condition: try:
query_res = db.query(AccountFinance).all() get_finance_orm = db.query(AccountFinance).filter(and_(*finance_condition))
return [i.to_dict() for i in query_res][::-1] condition_data = db.execute(get_finance_orm).fetchall()
serializer_info = [i[0].to_dict() for i in condition_data]
serializer_info.reverse()
except Exception as e:
print(e)
return [], 0 if is_list else []
# 判断是列表还是导出接口
if is_list:
return serializer_info[(int(data.page) - 1) * data.size:data.size * data.page], len(serializer_info)
else: else:
get_user_orm_sql = db.query(AccountFinance).filter(and_(*finance_condition)) return serializer_info
query_res = db.execute(get_user_orm_sql).fetchall()
return [i[0].to_dict() for i in query_res][::-1]
def get_finance_details(db, data): def get_finance_details(db, data, is_list=None):
"""账户财务明细""" """账户财务明细"""
finance_condition = [] finance_condition = []
if data.type or data.type == 0: if data.type or data.type == 0:
...@@ -122,10 +128,18 @@ def get_finance_details(db, data): ...@@ -122,10 +128,18 @@ def get_finance_details(db, data):
finance_condition.append(AccountFinanceDetails.create_time >= data.start_time) finance_condition.append(AccountFinanceDetails.create_time >= data.start_time)
if data.end_time: if data.end_time:
finance_condition.append(AccountFinanceDetails.create_time <= data.end_time) finance_condition.append(AccountFinanceDetails.create_time <= data.end_time)
if not finance_condition: try:
query_res = db.query(AccountFinanceDetails).all() get_details_orm = db.query(AccountFinanceDetails).filter(and_(*finance_condition))
return [i.to_dict() for i in query_res][::-1] condition_data = db.execute(get_details_orm).fetchall()
serial_info = [i[0].to_dict() for i in condition_data]
serial_info.reverse()
except Exception as e:
print(e)
return [], 0, 0 if is_list else []
# 判断是列表还是导出接口
if is_list:
df = pd.DataFrame(serial_info)
count = df['amount'].apply(lambda x: x).sum()
return serial_info[(int(data.page) - 1) * data.size:data.size * data.page], len(serial_info), count
else: else:
get_user_orm_sql = db.query(AccountFinanceDetails).filter(and_(*finance_condition)) return serial_info
query_res = db.execute(get_user_orm_sql).fetchall()
return [i[0].to_dict() for i in query_res][::-1]
...@@ -38,4 +38,4 @@ class FinanceInfo(PublicModel): ...@@ -38,4 +38,4 @@ class FinanceInfo(PublicModel):
class FinanceDetails(PublicModel): class FinanceDetails(PublicModel):
type: Optional[int] = None type: Optional[int] = None
gift_type: Optional[int] = None gift_type: Optional[str] = None
...@@ -2,6 +2,7 @@ from fastapi import Depends, APIRouter ...@@ -2,6 +2,7 @@ from fastapi import Depends, APIRouter
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app import get_db from app import get_db
from app.api.account import schemas, crud from app.api.account import schemas, crud
from app.api.statement import crud as statement_crud
from libs.result_format import HttpResultResponse, HttpMessage from libs.result_format import HttpResultResponse, HttpMessage
router = APIRouter() router = APIRouter()
...@@ -43,12 +44,26 @@ def read_account(data: schemas.AccountUpdate, db: Session = Depends(get_db)): ...@@ -43,12 +44,26 @@ def read_account(data: schemas.AccountUpdate, db: Session = Depends(get_db)):
@router.post("/finance/info") @router.post("/finance/info")
def finance_information(data: schemas.FinanceInfo, db: Session = Depends(get_db)): def finance_information(data: schemas.FinanceInfo, db: Session = Depends(get_db)):
"""账户财务信息""" """账户财务信息"""
res = crud.get_finance_info(db, data) res, total = crud.get_finance_info(db, data, 1)
return HttpResultResponse(total=len(res), data=res[int(data.page-1)*data.size:data.page*data.size]) return HttpResultResponse(total=total, data=res[int(data.page-1)*data.size:data.page*data.size])
@router.post("/finance/info/excel")
def finance_info_excel(data: schemas.FinanceInfo, db: Session = Depends(get_db)):
"""账户财务信息导出"""
statement_list = crud.get_finance_info(db, data)
return statement_crud.data_to_file(statement_list, "财务信息")
@router.post("/finance/details") @router.post("/finance/details")
def finance_details(data: schemas.FinanceDetails, db: Session = Depends(get_db)): def finance_details(data: schemas.FinanceDetails, db: Session = Depends(get_db)):
"""账户财务明细""" """账户财务明细"""
res = crud.get_finance_details(db, data) res, total, count = crud.get_finance_details(db, data, 1)
return HttpResultResponse(total=len(res), data=res[int(data.page-1)*data.size:data.page*data.size]) return HttpResultResponse(total=total, data=res, count=count)
@router.post("/finance/details/excel")
def finance_info_excel(data: schemas.FinanceDetails, db: Session = Depends(get_db)):
"""账户财务明细导出"""
statement_list = crud.get_finance_details(db, data)
return statement_crud.data_to_file(statement_list, "财务明细")
...@@ -48,8 +48,8 @@ class AccountFinance(Base, SerializerMixin): ...@@ -48,8 +48,8 @@ class AccountFinance(Base, SerializerMixin):
account_tag = Column(String(255), comment="账户标识") account_tag = Column(String(255), comment="账户标识")
account_uuid = Column(String(100), comment="账户uuid") account_uuid = Column(String(100), comment="账户uuid")
balance = Column(String(255), comment="当日余额") balance = Column(String(255), comment="当日余额")
income = Column(Float, comment="当日入账") income = Column(Float, default=0, comment="当日入账")
output = Column(Float, comment="当日出账") output = Column(Float, default=0, comment="当日出账")
create_time = Column(DateTime, comment="创建时间") create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '账号财务数据表'} __table_args__ = {'comment': '账号财务数据表'}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment