__init__.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
  4. from common.security import valid_access_token
  5. from fastapi.responses import JSONResponse
  6. from utils.riskManagement_uitl import *
  7. from utils.ry_system_util import *
  8. from sqlalchemy.orm import Session
  9. from sqlalchemy import and_, or_
  10. from pydantic import BaseModel
  11. from datetime import datetime
  12. from database import get_db
  13. from typing import List
  14. from models import *
  15. from utils import *
  16. import traceback
  17. import json
  18. router = APIRouter()
  19. @router.get('/company/list')
  20. async def get_company_list(
  21. area_code: str = Query(None, description='区域代码'),
  22. keyword :str = Query(None, description='企业名称或企业负责人'),
  23. page: int = Query(1, gt=0, description='页码'),
  24. pageSize: int = Query(10, gt=0, description='每页条目数量'),
  25. db: Session = Depends(get_db),
  26. user_id = Depends(valid_access_token)
  27. ):
  28. try:
  29. # 构建查询
  30. query = db.query(CompanyManagementBaseInfo)
  31. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  32. # 应用查询条件
  33. if area_code:
  34. query = query.filter(CompanyManagementBaseInfo.district_code == area_code)
  35. if keyword:
  36. query = query.filter(or_(CompanyManagementBaseInfo.company_name.like(f'%{keyword}%'),
  37. CompanyManagementBaseInfo.responsible_person.like(f'%{keyword}%')))
  38. # 计算总条目数
  39. total_items = query.count()
  40. # 排序
  41. query = query.order_by(CompanyManagementBaseInfo.create_time.desc())
  42. # 执行分页查询
  43. Companys = query.offset((page - 1) * pageSize).limit(pageSize).all()
  44. # 将查询结果转换为列表形式的字典
  45. Companys_list = []
  46. for company in Companys:
  47. province = city_code_get_city_name(db, company.province_code)
  48. city = city_code_get_city_name(db, company.city_code)
  49. district = city_code_get_city_name(db, company.district_code)
  50. company_info = {
  51. "id": company.id,
  52. "company_name": company.company_name,
  53. "province": province,
  54. "province_code": company.province_code,
  55. "city": city,
  56. "city_code": company.city_code,
  57. "district": district,
  58. "district_code": company.district_code,
  59. "company_address": company.company_address,
  60. "responsible_person": company.responsible_person,
  61. "company_type": company.company_type,
  62. "phone":company.phone,
  63. "create_time": company.create_time.strftime('%Y-%m-%d')
  64. }
  65. Companys_list.append(company_info)
  66. # 返回结果
  67. return {
  68. "code": 200,
  69. "msg": "成功",
  70. "data": Companys_list,
  71. "total": total_items,
  72. "page": page,
  73. "pageSize": pageSize,
  74. "totalPages": (total_items + pageSize - 1) // pageSize
  75. }
  76. except Exception as e:
  77. # 处理异常
  78. traceback.print_exc()
  79. raise HTTPException(status_code=500, detail=str(e))
  80. @router.get('/company/{id}')
  81. async def get_company(
  82. id: str ,
  83. db: Session = Depends(get_db),
  84. user_id = Depends(valid_access_token)
  85. ):
  86. try:
  87. # 构建查询
  88. query = db.query(CompanyManagementBaseInfo)
  89. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  90. # 应用查询条件
  91. if id:
  92. query = query.filter(CompanyManagementBaseInfo.id == id)
  93. # 执行查询
  94. company = query.first()
  95. if not company:
  96. detail = "数据不存在"
  97. return JSONResponse(status_code=404, content={"code":404,"msg":"数据不存在"})
  98. province = city_code_get_city_name(db, company.province_code)
  99. city = city_code_get_city_name(db, company.city_code)
  100. district = city_code_get_city_name(db, company.district_code)
  101. company_result = {
  102. "id": company.id,
  103. "company_name": company.company_name,
  104. "province": province,
  105. "province_code": company.province_code,
  106. "city": city,
  107. "city_code": company.city_code,
  108. "district": district,
  109. "district_code": company.district_code,
  110. "company_address": company.company_address,
  111. "responsible_person": company.responsible_person,
  112. "company_type": company.company_type,
  113. "phone":company.phone,
  114. "create_time": company.create_time.strftime('%Y-%m-%d')
  115. }
  116. # 返回结果
  117. return {
  118. "code": 200,
  119. "msg": "成功",
  120. "data": company_result
  121. }
  122. except Exception as e:
  123. # 处理异常
  124. traceback.print_exc()
  125. if str(e)=='':
  126. e = detail
  127. raise HTTPException(status_code=500, detail=str(e))
  128. @router.post('/company/create')
  129. async def create_company(
  130. db: Session = Depends(get_db),
  131. body = Depends(remove_xss_json),
  132. user_id = Depends(valid_access_token)
  133. ):
  134. try:
  135. new_company = CompanyManagementBaseInfo(
  136. id=new_guid(),
  137. company_name = body['company_name'],
  138. province = city_code_get_city_name(db,body['province_code']),
  139. province_code = body['province_code'],
  140. city = city_code_get_city_name(db,body['city_code']),
  141. city_code = body['city_code'],
  142. district = city_code_get_city_name(db,body['district_code']),
  143. district_code = body['district_code'],
  144. company_address = body['company_address'],
  145. responsible_person = body['responsible_person'],
  146. company_type =body['company_type'],
  147. phone = body['phone'],
  148. create_by = user_id
  149. )
  150. # 添加到数据库会话并提交
  151. db.add(new_company)
  152. db.commit()
  153. # 返回创建成功的响应
  154. return {
  155. "code": 200,
  156. "msg": "成功",
  157. "data": None
  158. }
  159. except Exception as e:
  160. # 处理异常
  161. traceback.print_exc()
  162. raise HTTPException(status_code=500, detail=str(e))
  163. def area_code_get_area_name(db,area_code):
  164. query = db.query(GovdataArea).filter_by(area_code=area_code).first()
  165. if query:
  166. return query.area_name
  167. return ''
  168. def city_code_get_city_name(db,area_code):
  169. query = db.query(GovdataCity).filter_by(id=area_code).first()
  170. if query:
  171. return query.name
  172. return ''
  173. @router.put('/company/update')
  174. async def update_company(
  175. db: Session = Depends(get_db),
  176. body = Depends(remove_xss_json),
  177. user_id = Depends(valid_access_token)
  178. ):
  179. try:
  180. # 提取请求数据
  181. query = db.query(CompanyManagementBaseInfo)
  182. query = query.filter(CompanyManagementBaseInfo.id == body['id'])
  183. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  184. company = query.first()
  185. if not company:
  186. return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
  187. if 'company_name' in body:
  188. company.company_name = body['company_name']
  189. # if 'province' in body:
  190. # company.province = body['province']
  191. if 'province_code' in body:
  192. company.province_code = body['province_code']
  193. company.province = city_code_get_city_name(db,body['province_code'])
  194. # if 'city' in body:
  195. # company.city = body['city']
  196. if 'city_code' in body:
  197. company.city_code = body['city_code']
  198. company.city = city_code_get_city_name(db,body['city_code'])
  199. # if 'district' in body:
  200. # company.district = body['district']
  201. if 'district_code' in body:
  202. company.district_code = body['district_code']
  203. company.district =city_code_get_city_name(db,body['district_code'])
  204. if 'company_address' in body:
  205. company.company_address = body['company_address']
  206. if 'responsible_person' in body:
  207. company.responsible_person = body['responsible_person']
  208. if 'company_type' in body:
  209. company.company_type = body['company_type']
  210. if 'phone' in body:
  211. company.phone = body['phone']
  212. company.update_by = user_id
  213. # 更新到数据库会话并提交
  214. db.commit()
  215. db.refresh(company) # 可选,如果需要刷新实例状态
  216. # 返回创建成功的响应
  217. return {
  218. "code": 200,
  219. "msg": "成功",
  220. "data": None
  221. }
  222. except Exception as e:
  223. # 处理异常
  224. traceback.print_exc()
  225. raise HTTPException(status_code=500, detail=str(e))
  226. @router.delete('/company/delete')
  227. async def delete_companys(
  228. companyIds: list,
  229. db: Session = Depends(get_db),
  230. body = Depends(remove_xss_json),
  231. user_id = Depends(valid_access_token)
  232. ):
  233. try:
  234. # 提取请求数据
  235. query = db.query(CompanyManagementBaseInfo)
  236. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  237. query = query.filter(CompanyManagementBaseInfo.id.in_(companyIds))
  238. companys = query.all()
  239. if not companys:
  240. return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
  241. for company in companys:
  242. company.del_flag = '2'
  243. company.update_by=user_id
  244. # 更新到数据库会话并提交
  245. db.commit()
  246. # 返回创建成功的响应
  247. return {
  248. "code": 200,
  249. "msg": "删除成功",
  250. "data": None
  251. }
  252. except Exception as e:
  253. # 处理异常
  254. traceback.print_exc()
  255. raise HTTPException(status_code=500, detail=str(e))
  256. @router.delete('/company/delete/{companyId}')
  257. async def delete_company(
  258. companyId: str,
  259. db: Session = Depends(get_db),
  260. body = Depends(remove_xss_json),
  261. user_id = Depends(valid_access_token)
  262. ):
  263. try:
  264. # 提取请求数据
  265. query = db.query(CompanyManagementBaseInfo)
  266. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  267. query = query.filter(CompanyManagementBaseInfo.id==companyId)
  268. company = query.first()
  269. if not company:
  270. return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
  271. company.del_flag = '2'
  272. company.update_by = user_id
  273. # 更新到数据库会话并提交
  274. db.commit()
  275. db.refresh(company) # 可选,如果需要刷新实例状态
  276. # 返回创建成功的响应
  277. return {
  278. "code": 200,
  279. "msg": "删除成功",
  280. "data": None
  281. }
  282. except Exception as e:
  283. # 处理异常
  284. traceback.print_exc()
  285. raise HTTPException(status_code=500, detail=str(e))