|
@@ -0,0 +1,72 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+
|
|
|
+from fastapi import APIRouter, Request, Depends, Query, HTTPException, status,WebSocket,WebSocketDisconnect
|
|
|
+from common.security import valid_access_token,valid_websocket_token
|
|
|
+from fastapi.responses import JSONResponse
|
|
|
+from sqlalchemy.orm import Session
|
|
|
+from sqlalchemy.sql import func
|
|
|
+from common.auth_user import *
|
|
|
+from sqlalchemy import text
|
|
|
+from pydantic import BaseModel
|
|
|
+from common.BigDataCenterAPI import *
|
|
|
+from database import get_db
|
|
|
+from typing import List
|
|
|
+from models import *
|
|
|
+from utils import *
|
|
|
+from utils.spatial import *
|
|
|
+from utils.ry_system_util import *
|
|
|
+from utils.resource_provision_util import *
|
|
|
+from common.websocketManager import *
|
|
|
+import json
|
|
|
+import traceback
|
|
|
+
|
|
|
+router = APIRouter()
|
|
|
+
|
|
|
+
|
|
|
+@router.get("/list")
|
|
|
+async def get_pattern_list(
|
|
|
+ material_id: str = Query(None, description='物资id'),
|
|
|
+ io_number: str = Query(None, description='出入库单号'),
|
|
|
+ io_flag: str = Query(None, description='出入库标识'),
|
|
|
+ page: int = Query(1, gt=0, description='页码'),
|
|
|
+ pageSize: int = Query(None, gt=0, description='每页条目数量'),
|
|
|
+ db: Session = Depends(get_db)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ query = db.query(ResourceProvisionWarehouseMovement)
|
|
|
+ query = query.filter_by(del_flag='0')
|
|
|
+ if material_id:
|
|
|
+ query = query.filter(ResourceProvisionWarehouseMovement.material_id.like(f'%{material_id}%'))
|
|
|
+ if io_number:
|
|
|
+ query = query.filter(ResourceProvisionWarehouseMovement.io_number.like(f'%{io_number}%'))
|
|
|
+ if io_flag:
|
|
|
+ query = query.filter(ResourceProvisionWarehouseMovement.io_flag==io_flag)
|
|
|
+ total_items = query.count()
|
|
|
+ if pageSize is None:
|
|
|
+ pageSize = total_items
|
|
|
+ if total_items==0:
|
|
|
+ pageSize = 1
|
|
|
+ # 排序
|
|
|
+ query = query.order_by(ResourceProvisionWarehouseMovement.create_time.desc())
|
|
|
+ # 执行分页查询
|
|
|
+ lists = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+ data = [ ]
|
|
|
+ for info in lists:
|
|
|
+ material_info = material_id_get_material_info(db,material_id)
|
|
|
+ data.append({"id": info.id,
|
|
|
+ "product_info": f"ID: {info.material_id}/n{material_info.material_name}",
|
|
|
+ "io_number": info.io_number,
|
|
|
+ "io_flag": info.io_flag,
|
|
|
+ "changed_stock": info.changed_stock,
|
|
|
+ "remaining_stock": info.remaining_stock,
|
|
|
+ "create_time":info.create_time})
|
|
|
+ return {"code": 200, "msg": "查询成功", "data": data,
|
|
|
+ "total": total_items,
|
|
|
+ "page": page,
|
|
|
+ "pageSize": pageSize,
|
|
|
+ "totalPages": (total_items + pageSize - 1) // pageSize
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|