Commit 1494f661 authored by xianyang's avatar xianyang

报表-修复报表优化

parent f0925b50
...@@ -45,5 +45,5 @@ class FixTable(BaseModel): ...@@ -45,5 +45,5 @@ class FixTable(BaseModel):
type: int type: int
account_id: int account_id: int
money: float money: float
amount_type: str amount_type: str = ""
remark: str remark: str
...@@ -9,6 +9,7 @@ from starlette.responses import StreamingResponse ...@@ -9,6 +9,7 @@ from starlette.responses import StreamingResponse
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from libs.functions import wrapper_out from libs.functions import wrapper_out
from libs.orm import QueryAllData
from models.recharge import Recharge, UserWC, GuildWC, FinanceFixLog from models.recharge import Recharge, UserWC, GuildWC, FinanceFixLog
locka = threading.Lock() locka = threading.Lock()
...@@ -215,9 +216,17 @@ class WithdrawStatement(object): ...@@ -215,9 +216,17 @@ class WithdrawStatement(object):
class FinanceFix(object): class FinanceFix(object):
@staticmethod @staticmethod
@wrapper_out()
def get_finance_fix_data(db: Session, data): def get_finance_fix_data(db: Session, data):
"""财务修复""" """财务修复"""
total = db.query(func.count(FinanceFixLog.id)).scalar() # total = db.query(func.count(FinanceFixLog.id)).scalar()
output = db.query(FinanceFixLog).limit(data.page * data.size).offset((data.page - 1) * data.size).all() # output = db.query(FinanceFixLog).order_by(FinanceFixLog.id.desc()).offset((data.page - 1) *
return [i.to_dict() for i in output], total # data.size).limit(data.size).all()
# return [i.to_dict() for i in output], total
finance_filters = []
if data.get("start_time"):
finance_filters.append(FinanceFixLog.create_time >= data.get("start_time") + " 00:00:00")
if data.get("end_time"):
finance_filters.append(FinanceFixLog.create_time <= data.get("end_time") + " 23:59:59")
querydata, count = QueryAllData(db, FinanceFixLog, data, finance_filters).query_data()
data = [QueryAllData.serialization(item) for item in querydata]
return data, count
...@@ -123,9 +123,9 @@ def accout_list_data(db: Session, dbname, params): ...@@ -123,9 +123,9 @@ def accout_list_data(db: Session, dbname, params):
if params.get("uuid"): if params.get("uuid"):
accout_filters.append(dbname.uuid == params.get("uuid")) accout_filters.append(dbname.uuid == params.get("uuid"))
if params.get("start_time"): if params.get("start_time"):
accout_filters.append(dbname.create_time >= params.get("start_time")) accout_filters.append(dbname.create_time >= params.get("start_time") + " 00:00:00")
if params.get("end_time"): if params.get("end_time"):
accout_filters.append(dbname.create_time <= params.get("end_time")) accout_filters.append(dbname.create_time <= params.get("end_time") + " 23:59:59")
querydata, count = QueryAllData(db, dbname, params, accout_filters).query_data() querydata, count = QueryAllData(db, dbname, params, accout_filters).query_data()
data = [QueryAllData.serialization(item) for item in querydata] data = [QueryAllData.serialization(item) for item in querydata]
return data, count return data, count
...@@ -139,8 +139,8 @@ def query_uuid_or_user_number(db: Session, param): ...@@ -139,8 +139,8 @@ def query_uuid_or_user_number(db: Session, param):
guild = db.query(Guild).filter(Guild.uuid == param.uuid).first() guild = db.query(Guild).filter(Guild.uuid == param.uuid).first()
if not guild: if not guild:
return {} return {}
return {"nick_name": "(公会)" + guild.guild_name, "user_number": guild.id} return {"nick_name": "(公会)" + guild.guild_name, "user_number": guild.id, "is_guild": 1}
return {"nick_name": user.nick_name, "user_number": user.user_id} return {"nick_name": user.nick_name, "user_number": user.user_id, "is_guild": 0}
if param.user_number: if param.user_number:
user = db.query(V2User).filter(V2User.user_number == param.user_number).first() user = db.query(V2User).filter(V2User.user_number == param.user_number).first()
return {"nick_name": user.nick_name, "user_id": user.user_id, "uuid": user.uuid} return {"nick_name": user.nick_name, "user_id": user.user_id, "uuid": user.uuid}
...@@ -188,6 +188,8 @@ def transfer_money(db: Session, param, h_list): ...@@ -188,6 +188,8 @@ def transfer_money(db: Session, param, h_list):
def create_fix_table(db: Session, param, h_list): def create_fix_table(db: Session, param, h_list):
"""增加修复报表""" """增加修复报表"""
user = query_token(db, h_list) user = query_token(db, h_list)
if param.type == 0:
param.amount_type = 'consumable'
try: try:
present = FinanceFixLog(type=param.type, account_id=param.account_id, money=param.money, present = FinanceFixLog(type=param.type, account_id=param.account_id, money=param.money,
remark=param.remark, operator=user.get("username"), amount_type=param.amount_type, remark=param.remark, operator=user.get("username"), amount_type=param.amount_type,
......
...@@ -122,7 +122,7 @@ def guild_update_list(data: schemas.GuildUpdate, db: Session = Depends(get_db)): ...@@ -122,7 +122,7 @@ def guild_update_list(data: schemas.GuildUpdate, db: Session = Depends(get_db)):
@router.post("/finance/fix") @router.post("/finance/fix")
def finance_fix(data: acc_schemas.PublicModel, db: Session = Depends(get_db)): def finance_fix(data: acc_schemas.PublicModel, db: Session = Depends(get_db)):
"""账户修复报表""" """账户修复报表"""
res, num = crud.FinanceFix.get_finance_fix_data(db, data) res, num = crud.FinanceFix.get_finance_fix_data(db, data.dict(exclude_none=True))
return HttpResultResponse(total=num, data=res) return HttpResultResponse(total=num, data=res)
......
...@@ -23,13 +23,15 @@ class QueryAllData: ...@@ -23,13 +23,15 @@ class QueryAllData:
''' '''
if self.params == {}: if self.params == {}:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).all() queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
elif self.params_list == None: elif self.params_list == None:
queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).offset( queryData = self.db.query(self.dbname).filter().order_by(self.dbname.id.desc()).offset(
(int(self.page) - 1) * self.limit).limit(self.limit).all() (int(self.page) - 1) * self.limit).limit(self.limit).all()
count = self.db.query(func.count(self.dbname.id)).scalar()
else: else:
queryData = self.db.query(self.dbname).filter(and_(*self.params_list)).order_by( queryData = self.db.query(self.dbname).filter(and_(*self.params_list)).order_by(
self.dbname.id.desc()).offset((int(self.page) - 1) * self.limit).limit(self.limit).all() self.dbname.id.desc()).offset((int(self.page) - 1) * self.limit).limit(self.limit).all()
count = self.db.query(func.count(self.dbname.id)).scalar() count = self.db.query(func.count(self.dbname.id)).filter(and_(*self.params_list)).scalar()
return queryData, count return queryData, count
def query_filter(self): def query_filter(self):
......
...@@ -108,7 +108,7 @@ class Fiaccount(Base, SerializerMixin): ...@@ -108,7 +108,7 @@ class Fiaccount(Base, SerializerMixin):
beneficiary = Column(String(100), comment="受益人") beneficiary = Column(String(100), comment="受益人")
description = Column(String(100), comment="描述信息") description = Column(String(100), comment="描述信息")
uuid = Column(String(60), comment="用户id", index=True) uuid = Column(String(60), comment="用户id", index=True)
create_time = Column(Integer, comment="创建时间") create_time = Column(DateTime, comment="创建时间")
config_key = Column(String(150), comment="配置key,和api接口约定好的标识") config_key = Column(String(150), comment="配置key,和api接口约定好的标识")
income = Column(Text, comment="入账") income = Column(Text, comment="入账")
output = Column(Text, comment="出账") output = Column(Text, 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