123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- #!/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.post("/create")
- async def create_pattern(
- user_id=Depends(valid_access_token),
- body = Depends(remove_xss_json),
- db: Session = Depends(get_db)
- ):
- try:
- new_type = ResourceProvisionWarehouseRoomInfo(
- id = new_guid(),
- room_name=body['room_name'],
- warehouse=body['warehouse_id'],
- room_area=body['room_area'],
- available_area=body['available_area'],
- height=body['height'],
- room_volume=body['room_volume'],
- available_volume=body['available_volume'],
- storage_type=body['storage_type'],
- level=body['level'],
- storage_type_code=body['storage_type_code'],
- last_inventory_time=body['last_inventory_time'],
- create_by = user_id
- )
- db.add(new_type)
- db.commit()
- return {"code": 200, "msg": "创建成功", "data": None}
- except Exception as e:
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
- @router.put("/update/{id}")
- async def update_pattern(
- id :str ,
- user_id=Depends(valid_access_token),
- body=Depends(remove_xss_json),
- db: Session = Depends(get_db)
- ):
- try:
- info = warehouse_room_id_get_warehouse_room_info(db,id)
- if not info:
- return JSONResponse(status_code=404,content={"code":404,"msg":"warehouse room not found"})
- info.room_name = body['room_name']
- info.warehouse = body['warehouse_id']
- info.room_area = body['room_area']
- info.available_area = body['available_area']
- info.height = body['height']
- info.room_volume = body['room_volume']
- info.available_volume = body['available_volume']
- info.storage_type = body['storage_type']
- info.level = body['level']
- info.storage_type_code = body['storage_type_code']
- info.last_inventory_time = body['last_inventory_time']
- info.update_by = user_id
- db.commit()
- return {"code": 200, "msg": "更新成功"}
- except Exception as e:
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
- @router.get("/info/{id}")
- async def get_pattern_info(
- id: str,
- db: Session = Depends(get_db)
- ):
- try:
- info = warehouse_room_id_get_warehouse_room_info(db,id)
- if not info:
- return JSONResponse(status_code=404,content={"code":404,"msg":"warehouse room not found"})
- warehouse_info = warehouse_id_get_warehouse_info(db,info.warehouse)
- print(info.warehouse,warehouse_info)
- if warehouse_info:
- warehouse_name = warehouse_info.warehouse_name
- else:
- warehouse_name = None
- data = {
- "id":info.id,
- "warehouse_id": info.warehouse,
- "warehouse_name": warehouse_name,
- "room_name": info.room_name,
- "room_area": info.room_area,
- "available_area": info.available_area,
- "height": info.height,
- "room_volume": info.room_volume,
- "available_volume": info.available_volume,
- "storage_type": info.storage_type,
- "level": info.level,
- "storage_type_code": info.storage_type_code,
- "last_inventory_time": info.last_inventory_time,
- "create_time":info.create_time}
- return {"code": 200, "msg": "获取成功", "data": data}
- except Exception as e:
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
- @router.get("/list")
- async def get_pattern_list(
- warehouse_id: str = Query(None, description='名称'),
- page: int = Query(1, gt=0, description='页码'),
- pageSize: int = Query(100, gt=0, description='每页条目数量'),
- db: Session = Depends(get_db)
- ):
- try:
- query = db.query(ResourceProvisionWarehouseRoomInfo)
- query = query.filter_by(del_flag='0')
- if warehouse_id:
- query = query.filter(ResourceProvisionWarehouseInfo.warehouse_id==warehouse_id)
- total_items = query.count()
- # 排序
- query = query.order_by(ResourceProvisionWarehouseRoomInfo.create_time.desc())
- # 执行分页查询
- lists = query.offset((page - 1) * pageSize).limit(pageSize).all()
- data = []
- for info in lists:
- warehouse_info = warehouse_id_get_warehouse_info(db, info.warehouse)
- if warehouse_info:
- warehouse_name = warehouse_info.warehouse_name
- else:
- warehouse_name = None
- data.append({
- "id":info.id,
- "warehouse_id": info.warehouse,
- "warehouse_name": warehouse_name,
- "room_name": info.room_name,
- "room_area": info.room_area,
- "available_area": info.available_area,
- "height": info.height,
- "room_volume": info.room_volume,
- "available_volume": info.available_volume,
- "storage_type": info.storage_type,
- "level": info.level,
- "storage_type_code": info.storage_type_code,
- "last_inventory_time": info.last_inventory_time,
- "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)}")
- @router.delete("/delete/{id}")
- async def delete_pattern(
- id: str,
- db: Session = Depends(get_db)
- ):
- try:
- # 检查图案是否存在
- info = warehouse_room_id_get_warehouse_room_info(db, id)
- if not info:
- return JSONResponse(status_code=404, content={"code": 404, "msg": "warehouse room not found"})
- info.del_flag='2'
- db.commit()
- return {"code": 200, "msg": "删除成功"}
- except Exception as e:
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
- @router.get('/treeselect')
- async def gettreeselect(request: Request,room_name: str = Query(None, description='名称'),material_type_name: str = Query(None, description='名称'),db: Session = Depends(get_db), user_id: int = Depends(valid_access_token)):
- query = db.query(ResourceProvisionWarehouseInfo)
- query = query.filter_by(del_flag='0')
- query = query.filter_by(status='1')
- query = query.order_by(ResourceProvisionWarehouseInfo.create_time.desc())
- lists = query.all()
- data = []
- for info in lists:
- data_info = {"id": info.warehouse_id,
- "label": info.warehouse_name,
- "isWarehouse": True}
- # material_list = warehouse_id_get_material_list(db,info.warehouse_id)
- query1 = db.query(ResourceProvisionWarehouseRoomInfo)
- query1 = query1.filter_by(warehouse=info.warehouse_id, del_flag='0')
- if room_name:
- query1 = query1.filter(ResourceProvisionWarehouseRoomInfo.room_name.like(f'%{room_name}%'))
- room_list= query1.all()
- if room_list:
- data_info['children'] = []
- for room in room_list:
- data_info['children'].append({"id": room.id,
- "label": room.room_name,
- "warehouse_id": info.warehouse_id,
- "warehouse_name":info.warehouse_name,
- "isWarehouse": False})
- data.append(data_info)
- return {
- "code": 200,
- "msg": "操作成功",
- "data": data
- }
|