123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- #!/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 pandas as pd
- 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:
- room_id = body['room_id']
- warehouse_info = warehouse_room_id_get_warehouse_room_info(db,room_id)
- warehouse_id = ''
- if warehouse_info:
- warehouse_id = warehouse_info.warehouse
- new_inbound = ResourceProvisionInboundBasic(
- # id = new_guid(),
- warehouse_id=warehouse_id, #body['warehouse_id'],
- purchase_order_number=body['purchase_order_number'],
- is_donation=body['is_donation'],
- transport_order_number=body['transport_order_number'],
- donator_phone=body['donator_phone'],
- donator_name=body['donator_name'],
- reviewer=body['reviewer'],
- enterprise_name=body['enterprise_name'],
- enterprise_code=body['enterprise_code'],
- grading_info=body['grading_info'],
- type=body['type'],
- supplier_name=body['supplier_name'],
- remark=body['remark'],
- supplier_code=body['supplier_code'],
- completion_time=body['completion_time'],
- planned_completion_time=body['planned_completion_time'],
- room_id=body['room_id'],
- # inbound_order_number=body['inbound_order_number'],
- create_by = user_id
- )
- db.add(new_inbound)
- db.commit()
- new_inbound.inbound_order_number= f'{time.strftime("%Y%m%d", time.localtime())}1{str(new_inbound.id).zfill(7)}'
- filePath = f'/data/upload/mergefile/uploads/{body["filename"]}'
- movementData = pd.read_excel(filePath).to_dict(orient='records')
- status_1 = create_movement(db, movementData, new_inbound.inbound_order_number, 'I', user_id,warehouse_id,room_id)
- if status_1!="成功":
- new_inbound.del_flag='2'
- db.commit()
- return JSONResponse(status_code=500,content={"code": 200, "msg": status_1, "data": None})
- #
- return {"code": 200, "msg": "创建成功", "data": None}
- except Exception as e:
- traceback.print_exc()
- db.rollback()
- 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,
- user_id=Depends(valid_access_token),
- db: Session = Depends(get_db)
- ):
- try:
- info = inbound_id_get_inbound_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_id)
- if warehouse_info:
- warehouse_name = warehouse_info.warehouse_name
- else:
- warehouse_name = None
- room_info = warehouse_room_id_get_warehouse_room_info(db,info.room_id)
- if room_info:
- room_name = room_info.room_name
- else:
- room_name = None
- data = {
- "id":info.id,
- "warehouse_id": info.warehouse_id,
- "warehouse_name": warehouse_name,
- "room_id": info.room_id,
- "room_name": room_name,
- "purchase_order_number": info.purchase_order_number,
- "is_donation": info.is_donation,
- "transport_order_number": info.transport_order_number,
- "donator_phone": info.donator_phone,
- "donator_name": info.donator_name,
- "reviewer": info.reviewer,
- "grading_info": info.grading_info,
- "enterprise_name": info.enterprise_name,
- "enterprise_code": info.enterprise_code,
- "type": info.type,
- "supplier_name": info.supplier_name,
- "creation_time": info.creation_time,
- "planned_completion_time":info.planned_completion_time,
- "remark": info.remark,
- "supplier_code": info.supplier_code,
- "completion_time": info.completion_time,
- "inbound_order_number":info.inbound_order_number,
- "new_time":info.new_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='名称'),
- user_id=Depends(valid_access_token),
- page: int = Query(1, gt=0, description='页码'),
- pageSize: int = Query(100, gt=0, description='每页条目数量'),
- db: Session = Depends(get_db)
- ):
- try:
- query = db.query(ResourceProvisionInboundBasic)
- 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(ResourceProvisionInboundBasic.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_id)
- if warehouse_info:
- warehouse_name = warehouse_info.warehouse_name
- else:
- warehouse_name = None
- room_info = warehouse_room_id_get_warehouse_room_info(db, info.room_id)
- if room_info:
- room_name = room_info.room_name
- else:
- room_name = None
- data.append({
- "id":info.id,
- "warehouse_id": info.warehouse_id,
- "warehouse_name": warehouse_name,
- "room_id": info.room_id,
- "room_name": room_name,
- "purchase_order_number": info.purchase_order_number,
- "is_donation": info.is_donation,
- "transport_order_number": info.transport_order_number,
- "donator_phone": info.donator_phone,
- "donator_name": info.donator_name,
- "reviewer": info.reviewer,
- "grading_info": info.grading_info,
- "enterprise_name": info.enterprise_name,
- "enterprise_code": info.enterprise_code,
- "type": info.type,
- "supplier_name": info.supplier_name,
- "creation_time": info.creation_time,
- "planned_completion_time":info.planned_completion_time,
- "remark": info.remark,
- "supplier_code": info.supplier_code,
- "completion_time": info.completion_time,
- "inbound_order_number":info.inbound_order_number,
- "new_time":info.new_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)}")
|