增加daily_diff 增删查业务
This commit is contained in:
94
app/api/daily_diff.py
Normal file
94
app/api/daily_diff.py
Normal file
@@ -0,0 +1,94 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
from ..core.database import get_db
|
||||
from ..core.response_code import ResponseCode
|
||||
from ..schemas.daily_diff import (
|
||||
BatchCreateRequest,
|
||||
BatchCreateResponse,
|
||||
DailyDiffQueryRequest,
|
||||
DailyDiffListResponse,
|
||||
DailyDiffResponse,
|
||||
BatchDeleteRequest,
|
||||
BatchDeleteResponse
|
||||
)
|
||||
from ..services.daily_diff import DailyDiffService
|
||||
|
||||
router = APIRouter(prefix="/daily_diff", tags=["每日差异数据"])
|
||||
|
||||
@router.post("/batch_create", response_model=BatchCreateResponse)
|
||||
def batch_create(request: BatchCreateRequest, db: Session = Depends(get_db)):
|
||||
"""
|
||||
批量新增数据
|
||||
使用check_time和linecode检查重复,重复则跳过该条数据
|
||||
"""
|
||||
try:
|
||||
service = DailyDiffService()
|
||||
# 转换为字典列表
|
||||
data_list = [item.model_dump() for item in request.data]
|
||||
result = service.batch_create(db, data_list)
|
||||
|
||||
return BatchCreateResponse(
|
||||
code=ResponseCode.SUCCESS if result['success'] else ResponseCode.IMPORT_FAILED,
|
||||
message=result['message'],
|
||||
total_count=result['total_count'],
|
||||
success_count=result['success_count'],
|
||||
skip_count=result['skip_count']
|
||||
)
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=f"批量新增失败: {str(e)}"
|
||||
)
|
||||
|
||||
@router.post("/query", response_model=DailyDiffListResponse)
|
||||
def query(request: DailyDiffQueryRequest, db: Session = Depends(get_db)):
|
||||
"""
|
||||
多条件查询
|
||||
支持account_id、account_name、check_time、check_time范围、linecode等条件
|
||||
"""
|
||||
try:
|
||||
service = DailyDiffService()
|
||||
data, total = service.query_by_conditions(
|
||||
db,
|
||||
account_id=request.account_id,
|
||||
account_name=request.account_name,
|
||||
check_time=request.check_time,
|
||||
check_time_start=request.check_time_start,
|
||||
check_time_end=request.check_time_end,
|
||||
linecode=request.linecode,
|
||||
linecodes=request.linecodes,
|
||||
page=request.page,
|
||||
page_size=request.page_size
|
||||
)
|
||||
|
||||
return DailyDiffListResponse(
|
||||
code=ResponseCode.SUCCESS,
|
||||
message="查询成功",
|
||||
total=total,
|
||||
data=[DailyDiffResponse.model_validate(item) for item in data]
|
||||
)
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=f"查询失败: {str(e)}"
|
||||
)
|
||||
|
||||
@router.post("/batch_delete", response_model=BatchDeleteResponse)
|
||||
def batch_delete(request: BatchDeleteRequest, db: Session = Depends(get_db)):
|
||||
"""
|
||||
批量删除数据
|
||||
"""
|
||||
try:
|
||||
service = DailyDiffService()
|
||||
deleted_count = service.batch_delete(db, request.ids)
|
||||
|
||||
return BatchDeleteResponse(
|
||||
code=ResponseCode.SUCCESS,
|
||||
message="删除成功",
|
||||
deleted_count=deleted_count
|
||||
)
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=f"删除失败: {str(e)}"
|
||||
)
|
||||
Reference in New Issue
Block a user