riskManagement_uitl.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. from models import *
  2. from utils import *
  3. from sqlalchemy import and_, or_
  4. from datetime import datetime, timedelta
  5. from dateutil.relativedelta import relativedelta
  6. def area_code_get_ancestors_names(db,area_info, ancestors_name=''):
  7. print(area_info)
  8. if area_info is None:
  9. print(ancestors_name)
  10. return ancestors_name
  11. else:
  12. ancestors_name = area_info.area_name + ancestors_name
  13. return area_code_get_ancestors_names(db,area_code_get_area_info(db,area_info.parent_code), ancestors_name)
  14. def area_code_get_area_info(db,area_code):
  15. # 机构id获取机构信息
  16. query = db.query(GovdataArea)
  17. query = query.filter(GovdataArea.status == '1')
  18. query = query.filter(GovdataArea.area_code == area_code)
  19. return query.first()
  20. def get_area_num(db,rang):
  21. query = db.query(GovdataArea)
  22. if rang=='0':
  23. return 1
  24. elif rang=='1':
  25. query = query.filter(and_(GovdataArea.area_code.like('%000000'),GovdataArea.area_code.notlike('%00000000')))
  26. return query.count()
  27. elif rang=='2':
  28. query = query.filter(and_(GovdataArea.area_code.like('%000'),GovdataArea.area_code.notlike('%000000')))
  29. return query.count()
  30. elif rang=='3':
  31. query = query.filter(GovdataArea.area_code.notlike('%000'))
  32. return query.count()
  33. else:
  34. return 0
  35. def get_area_code_list(db,rang):
  36. query = db.query(GovdataArea)
  37. if rang=='0':
  38. return ['440900000000']
  39. elif rang=='1':
  40. query = query.filter(and_(GovdataArea.area_code.like('%000000'),GovdataArea.area_code.notlike('%00000000')))
  41. return [i.area_code for i in query.all()]
  42. elif rang=='2':
  43. query = query.filter(and_(GovdataArea.area_code.like('%000'),GovdataArea.area_code.notlike('%000000')))
  44. return [i.area_code for i in query.all()]
  45. elif rang=='3':
  46. query = query.filter(GovdataArea.area_code.notlike('%000'))
  47. return [i.area_code for i in query.all()]
  48. else:
  49. return []
  50. def get_area_code_exclude_list(db,rang,list_1):
  51. query = db.query(GovdataArea)
  52. if rang=='0' and '440900000000' not in list_1:
  53. return ['440900000000']
  54. elif rang=='1':
  55. query = query.filter(and_(GovdataArea.area_code.like('%000000'),GovdataArea.area_code.notlike('%00000000'),~GovdataArea.area_code.in_(list_1)))
  56. return [i.area_code for i in query.all()]
  57. elif rang=='2':
  58. query = query.filter(and_(GovdataArea.area_code.like('%000'),GovdataArea.area_code.notlike('%000000'),~GovdataArea.area_code.in_(list_1)))
  59. return [i.area_code for i in query.all()]
  60. elif rang=='3':
  61. query = query.filter(GovdataArea.area_code.notlike('%000'),~GovdataArea.area_code.in_(list_1))
  62. return [i.area_code for i in query.all()]
  63. else:
  64. return []
  65. def get_task_date_list(cycle,start_date,end_date,corn_query):
  66. # 生成日期列表
  67. date_list = []
  68. if cycle=='4': #仅一次,返回当天
  69. date_list.append(datetime.today())
  70. return date_list
  71. elif cycle=='3': #每天
  72. current_date = start_date
  73. while current_date <= end_date:
  74. # 将日期添加到列表中
  75. date_list.append(current_date)
  76. # 增加一天
  77. current_date += timedelta(days=1)
  78. return date_list
  79. elif cycle=='2': #每周
  80. days_ahead = (7+int(corn_query) - start_date.weekday()) % 7
  81. current_date = start_date + timedelta(days=days_ahead)
  82. while current_date <= end_date:
  83. # 将日期添加到列表中
  84. date_list.append(current_date)
  85. # 增加七天
  86. current_date += timedelta(days=7)
  87. return date_list
  88. elif cycle=='1': #每月
  89. days_ahead = datetime.strptime(start_date.strftime("%Y-%m-")+corn_query, "%Y-%m-%d")
  90. if days_ahead>start_date:
  91. current_date = days_ahead
  92. else:
  93. current_date = days_ahead+relativedelta(months=1)
  94. while current_date <= end_date:
  95. # 将日期添加到列表中
  96. date_list.append(current_date)
  97. # 增加七天
  98. current_date += relativedelta(months=1)
  99. return date_list
  100. elif cycle=='0': #每月
  101. d,m = corn_query.split()
  102. days_ahead = datetime.strptime(start_date.strftime("%Y-")+m+'-'+d, "%Y-%m-%d")
  103. if days_ahead>start_date:
  104. current_date = days_ahead
  105. else:
  106. current_date = days_ahead+relativedelta(years=1)
  107. while current_date <= end_date:
  108. # 将日期添加到列表中
  109. date_list.append(current_date)
  110. # 增加七天
  111. current_date += relativedelta(years=1)
  112. return date_list
  113. def create_children_task(db,task_info,corn_query):
  114. cycle = task_info.inspection_cycle
  115. task_range = task_info.inspection_range
  116. for t in get_task_date_list(cycle,task_info.start_time,task_info.end_time,corn_query):
  117. new_children_task = RiskManagementInspectionTaskChildrenTask(
  118. id = new_guid(),
  119. task_id= task_info.id,
  120. task_number= task_info.task_number,
  121. type = task_info.inspection_business,
  122. tsak_time = t,
  123. cycle=cycle,
  124. task_range = task_range,
  125. task_num=get_area_num(db,task_range),
  126. create_by=task_info.create_by
  127. )
  128. db.add(new_children_task)
  129. db.commit()
  130. def create_risk_children_task(db,task_info,corn_query):
  131. cycle = task_info.task_cycle
  132. task_range = task_info.task_range
  133. for t in get_task_date_list(cycle,task_info.start_time,task_info.end_time,corn_query):
  134. new_children_task = RiskManagementRiskTaskChildrenTask(
  135. id = new_guid(),
  136. task_id= task_info.id,
  137. task_number= task_info.task_number,
  138. type = task_info.risk_type,
  139. tsak_time = t,
  140. cycle=cycle,
  141. task_range = task_range,
  142. task_num=get_area_num(db,task_range),
  143. create_by=task_info.create_by
  144. )
  145. db.add(new_children_task)
  146. db.commit()
  147. def inspection_task_id_get_inspection_task_info(db,id):
  148. query = db.query(RiskManagementInspectionTask)
  149. query = query.filter(RiskManagementInspectionTask.del_flag != '2')
  150. query = query.filter(RiskManagementInspectionTask.id == id)
  151. return query.first()
  152. def inspection_task_children_task_id_get_inspection_task_children_task_info(db,id):
  153. query = db.query(RiskManagementInspectionTaskChildrenTask)
  154. query = query.filter(RiskManagementInspectionTaskChildrenTask.del_flag != '2')
  155. query = query.filter(RiskManagementInspectionTaskChildrenTask.id == id)
  156. return query.first()
  157. def inspection_task_children_task_id_get_inspection_task_children_task_log_info(db,children_task_id):
  158. query = db.query(RiskManagementInspectionTaskChildrenTaskLog)
  159. query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.del_flag != '2')
  160. query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.children_task_id == children_task_id)
  161. return query.all()
  162. def risk_task_id_get_risk_task_info(db,id):
  163. query = db.query(RiskManagementRiskTask)
  164. query = query.filter(RiskManagementRiskTask.del_flag != '2')
  165. query = query.filter(RiskManagementRiskTask.id == id)
  166. return query.first()
  167. def risk_task_children_task_id_get_risk_task_children_task_info(db,id):
  168. query = db.query(RiskManagementRiskTaskChildrenTask)
  169. query = query.filter(RiskManagementRiskTaskChildrenTask.del_flag != '2')
  170. query = query.filter(RiskManagementRiskTaskChildrenTask.id == id)
  171. return query.first()
  172. def risk_task_children_task_id_get_risk_task_children_task_log_info(db,children_task_id):
  173. query = db.query(RiskManagementRiskTaskChildrenTaskLog)
  174. query = query.filter(RiskManagementRiskTaskChildrenTaskLog.del_flag != '2')
  175. query = query.filter(RiskManagementRiskTaskChildrenTaskLog.children_task_id == children_task_id)
  176. return query.all()
  177. def get_file_query_fun(db,from_scenario,foreign_key):
  178. file_query = db.query(RiskManagementFile)
  179. file_query = file_query.filter(RiskManagementFile.del_flag != '2')
  180. file_query = file_query.filter(RiskManagementFile.from_scenario == from_scenario)
  181. file_query = file_query.filter(RiskManagementFile.foreign_key == foreign_key)
  182. files = file_query.all()
  183. result = [{
  184. "uid": file.file_id,
  185. "status": file.status,
  186. "name": file.file_name_desc,
  187. "url": file.file_name #"/api/file/download/%s" %
  188. } for file in files]
  189. return result