|
@@ -0,0 +1,228 @@
|
|
|
+#!/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:
|
|
|
+ new_inbound = ResourceProvisionInboundBasic(
|
|
|
+ # id = new_guid(),
|
|
|
+ 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')
|
|
|
+ create_movement(db, movementData, new_inbound.inbound_order_number, 'I', user_id)
|
|
|
+ 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 = 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,
|
|
|
+ "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='名称'),
|
|
|
+ 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,
|
|
|
+ "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)}")
|