fapi.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #coding:utf-8
  2. from fastapi import FastAPI, Request, Body, UploadFile,Form
  3. from fastapi import BackgroundTasks, FastAPI, File, UploadFile,Request
  4. import os
  5. import uvicorn
  6. import time
  7. # from Zipfile import zipfile
  8. import main
  9. app = FastAPI()
  10. # 报价再评审
  11. @app.post("/quote_review_result")
  12. async def create_item(text_list=Body(None)):
  13. #json_post_raw = await request.json()
  14. try:
  15. json_post = json.dumps(eval(text_list))
  16. except:
  17. # json_post = json.dumps({'prompt':str(text_list)})
  18. json_post = text_list
  19. print(json_post)
  20. projectId = json_post['projectId']
  21. projectName = json_post['projectName']
  22. bidderUnit = json_post['bidderUnit']
  23. quoteCheck = json_post['quoteCheck']
  24. # try:
  25. if 1:
  26. data = main.quote_review_result(quoteCheck[0])
  27. code = 0
  28. ok = True
  29. msg = '成功'
  30. # except:
  31. # code = 1
  32. # ok = False
  33. # data = {}
  34. # msg = '失败'
  35. _json = {"code":code, "ok":ok, "data":data, "msg":msg}
  36. return _json
  37. @app.post("/req_json")
  38. async def req_json(request: Request, json_data: dict):
  39. # request.json() 返回json,此时可以利用pydantic进行json数据校验并映射到一个model类实例
  40. json_post_raw = await request.json()
  41. return json_post_raw
  42. # 获取minio上的文件
  43. def get_minio_file():
  44. if os.path.isfile(path) and path.endswith('.zip'):
  45. ## 解压方式1:存在乱码
  46. # f = zipfile.ZipFile(file, mode='r')
  47. # f.extractall(target_dir)
  48. ## 解压方式2:防止乱码
  49. with ZipFile(path, allowZip64=True) as zf:
  50. # 排除目录文件
  51. # print("zf.filelist", zf.filelist)
  52. file_iter = (filename for filename in zf.filelist if os.path.isfile(path))
  53. for filename in file_iter:
  54. # 编码文件名称为 utf 格式
  55. filename.filename = decode_path(filename.filename) # 防止乱码的操作
  56. zf.extract(filename, "./cache/" + tempdir)
  57. return 1
  58. # 专家打分图表上传
  59. @app.post("/quote_check_score")
  60. async def data(text_list=Body(None)):
  61. # json_post = await request.json()
  62. try:
  63. json_post = json.dumps(eval(text_list))
  64. except:
  65. # json_post = json.dumps({'prompt':str(text_list)})
  66. json_post = text_list
  67. try:
  68. projectId = json_post['projectId']
  69. projectName = json_post['projectName']
  70. # 企业列表
  71. bidderUnit = json_post['bidderUnit']
  72. # 不同模块评审因素
  73. quoteCheck = json_post['quoteCheck']
  74. # 专家打分图片列表
  75. scoreFile = json_post['scoreFile']
  76. except:
  77. pass
  78. # try:
  79. if 1:
  80. data = main.quote_check_score()
  81. code = 0
  82. ok = True
  83. msg = '成功'
  84. # except:
  85. # code = 1
  86. # ok = False
  87. # data = {}
  88. # msg = '失败'
  89. _json = {"code":code, "ok":ok, "data":data, "msg":msg}
  90. return _json
  91. #预审查、清标
  92. @app.post("/file_upload")
  93. async def file_upload(request: Request, file: UploadFile = File(...), userId:str=Form(...), pushFilename:str=Form(...)):
  94. """
  95. 文件上传
  96. 格式:pdf,docx,doc,txt,tar.gz,zip,7z, rar
  97. """
  98. json_post = await request.json()
  99. projectId = json_post['projectId']
  100. projectName = json_data['projectName']
  101. # 企业列表
  102. bidderUnit = json_data['bidderUnit']
  103. # 报告类型 0 预审查 1 清标
  104. reportFlag = json_data['reportFlag']
  105. # 采购文件
  106. scoreFile = json_data['buyFile']
  107. # 投标文件
  108. bidderFile = json_data['bidderFile']
  109. ip_adder = request.client.host
  110. print(callback_url1, ip_adder, pushFilename)
  111. #print(userId,pushFilename)
  112. res = await file.read()
  113. date = time.strftime('%Y-%m-%d', time.localtime(time.time()))
  114. try:
  115. os.mkdir('./uploads/' + date)
  116. except:
  117. pass
  118. with open('./uploads/' + date + '/' + file.filename, "wb") as f:
  119. f.write(res)
  120. json_data = {
  121. "code":0,
  122. "name":'',
  123. "msg":"",
  124. "data":{},
  125. "ok":True
  126. }
  127. try:
  128. 1/0
  129. get_minio_file(detection_type, './uploads/' + date + '/' + file.filename, pushFilename, userId, date, callback_url1)
  130. except:
  131. json_data = {
  132. "code":1,
  133. "name":'',
  134. "msg":"",
  135. "data":{},
  136. "ok":False
  137. }
  138. return json_data
  139. return json_data
  140. if __name__ == '__main__':
  141. uvicorn.run(app, host='0.0.0.0', port=13888, workers=1)