123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- from models import *
- from utils import *
- from sqlalchemy import and_, or_
- from datetime import datetime, timedelta
- from dateutil.relativedelta import relativedelta
- def area_code_get_ancestors_names(db,area_info, ancestors_name=''):
- # print(area_info)
- if area_info is None:
- # print(ancestors_name)
- return ancestors_name
- else:
- ancestors_name = area_info.area_name + ancestors_name
- return area_code_get_ancestors_names(db,area_code_get_area_info(db,area_info.parent_code), ancestors_name)
- def area_code_get_area_info(db,area_code):
- # 机构id获取机构信息
- query = db.query(GovdataArea)
- query = query.filter(GovdataArea.status == '1')
- query = query.filter(GovdataArea.area_code == area_code)
- return query.first()
- def get_area_num(db,rang):
- query = db.query(GovdataArea)
- if rang=='0':
- return 1
- elif rang=='1':
- query = query.filter(and_(GovdataArea.area_code.like('%000000'),GovdataArea.area_code.notlike('%00000000')))
- return query.count()
- elif rang=='2':
- query = query.filter(and_(GovdataArea.area_code.like('%000'),GovdataArea.area_code.notlike('%000000')))
- return query.count()
- elif rang=='3':
- query = query.filter(GovdataArea.area_code.notlike('%000'))
- return query.count()
- else:
- return 0
- def get_area_code_list(db,rang):
- query = db.query(GovdataArea)
- if rang=='0':
- return ['440900000000']
- elif rang=='1':
- query = query.filter(and_(GovdataArea.area_code.like('%000000'),GovdataArea.area_code.notlike('%00000000')))
- return list({i.area_code for i in query.all()})
- elif rang=='2':
- query = query.filter(and_(GovdataArea.area_code.like('%000'),GovdataArea.area_code.notlike('%000000')))
- return list({i.area_code for i in query.all()})
- elif rang=='3':
- query = query.filter(GovdataArea.area_code.notlike('%000'))
- return list({i.area_code for i in query.all()})
- else:
- return []
- def get_area_code_exclude_list(db,rang,list_1):
- query = db.query(GovdataArea)
- if rang=='0' and '440900000000' not in list_1:
- return ['440900000000']
- elif rang=='1':
- query = query.filter(and_(GovdataArea.area_code.like('%000000'),GovdataArea.area_code.notlike('%00000000'),~GovdataArea.area_code.in_(list_1)))
- return list({i.area_code for i in query.all()})
- elif rang=='2':
- query = query.filter(and_(GovdataArea.area_code.like('%000'),GovdataArea.area_code.notlike('%000000'),~GovdataArea.area_code.in_(list_1)))
- return list({i.area_code for i in query.all()})
- elif rang=='3':
- query = query.filter(GovdataArea.area_code.notlike('%000'),~GovdataArea.area_code.in_(list_1))
- return list({i.area_code for i in query.all()})
- else:
- return []
- def area_code_get_task_range(area_code):
- if '00000000'==area_code[4:]:
- return '0'
- elif '00000000'!=area_code[4:] and '000000'==area_code[6:] :
- return '1'
- elif '000000'!=area_code[6:] and '000'==area_code[9:] :
- return '2'
- elif '000'!=area_code[9:]:
- return '3'
- else:
- return '-1'
- def area_code_rang_get_area_children_list(db,rang,area_code,complete_area_code_list):
- if int(area_code_get_task_range(area_code))>int(rang): #如果当前区划层级低于任务所属层级,返回空列表
- return []
- root_area = db.query(GovdataArea).filter_by(area_code=area_code).first()
- if not root_area:
- return [] # 如果没有找到区划,返回空列表
- # 然后,根据层级递归查找所有子区划
- area_codes = []
- def recursive_search(current_area):
- if area_code_get_task_range(current_area.area_code) == rang:
- if current_area.area_code not in complete_area_code_list:
- area_codes.append(current_area.area_code)
- else:
- for child in db.query(GovdataArea).filter_by(parent_code=current_area.area_code).all():
- recursive_search(child)
- recursive_search(root_area) # 从根区划开始递归搜索
- return area_codes
- def get_task_date_list(cycle,start_date,end_date,corn_query):
- # 生成日期列表
- date_list = []
- if cycle=='4': #仅一次,返回当天
- date_list.append(datetime.today())
- return date_list
- elif cycle=='3': #每天
- current_date = start_date
- while current_date <= end_date:
- # 将日期添加到列表中
- date_list.append(current_date)
- # 增加一天
- current_date += timedelta(days=1)
- return date_list
- elif cycle=='2': #每周
- days_ahead = (7+int(corn_query) - start_date.weekday()) % 7
- current_date = start_date + timedelta(days=days_ahead)
- while current_date <= end_date:
- # 将日期添加到列表中
- date_list.append(current_date)
- # 增加七天
- current_date += timedelta(days=7)
- return date_list
- elif cycle=='1': #每月
- if '-' in corn_query:
- corn_query = corn_query.split("-")[-1]
- days_ahead = datetime.strptime(start_date.strftime("%Y-%m-")+corn_query, "%Y-%m-%d")
- if days_ahead>start_date:
- current_date = days_ahead
- else:
- current_date = days_ahead+relativedelta(months=1)
- while current_date <= end_date:
- # 将日期添加到列表中
- date_list.append(current_date)
- # 增加七天
- current_date += relativedelta(months=1)
- return date_list
- elif cycle=='0': #每月
- if '-' in corn_query:
- y,m,d = corn_query.split("-")
- else:
- d,m = corn_query.split()
- days_ahead = datetime.strptime(start_date.strftime("%Y-")+m+'-'+d, "%Y-%m-%d")
- if days_ahead>start_date:
- current_date = days_ahead
- else:
- current_date = days_ahead+relativedelta(years=1)
- while current_date <= end_date:
- # 将日期添加到列表中
- date_list.append(current_date)
- # 增加七天
- current_date += relativedelta(years=1)
- return date_list
- def create_children_task(db,task_info,corn_query):
- cycle = task_info.inspection_cycle
- task_range = task_info.inspection_range
- for t in get_task_date_list(cycle,task_info.start_time,task_info.end_time,corn_query):
- new_children_task = RiskManagementInspectionTaskChildrenTask(
- id = new_guid(),
- task_id= task_info.id,
- task_number= task_info.task_number,
- type = task_info.inspection_business,
- tsak_time = t,
- cycle=cycle,
- task_range = task_range,
- task_num=get_area_num(db,task_range),
- create_by=task_info.create_by
- )
- db.add(new_children_task)
- db.commit()
- def create_risk_children_task(db,task_info,corn_query):
- cycle = task_info.task_cycle
- task_range = task_info.task_range
- for t in get_task_date_list(cycle,task_info.start_time,task_info.end_time,corn_query):
- new_children_task = RiskManagementRiskTaskChildrenTask(
- id = new_guid(),
- task_id= task_info.id,
- task_number= task_info.task_number,
- type = task_info.risk_type,
- tsak_time = t,
- cycle=cycle,
- task_range = task_range,
- task_num=get_area_num(db,task_range),
- create_by=task_info.create_by
- )
- db.add(new_children_task)
- db.commit()
- def create_rescue_resources_children_task(db,task_info,corn_query):
- cycle = task_info.task_cycle
- task_range = task_info.task_range
- for t in get_task_date_list(cycle,task_info.start_time,task_info.end_time,corn_query):
- new_children_task = RiskManagementRescueResourcesTaskChildrenTask(
- id = new_guid(),
- task_id= task_info.id,
- task_number= task_info.task_number,
- type = task_info.type,
- tsak_time = t,
- cycle=cycle,
- task_range = task_range,
- task_num=get_area_num(db,task_range),
- create_by=task_info.create_by
- )
- db.add(new_children_task)
- db.commit()
- def inspection_task_id_get_inspection_task_info(db,id):
- query = db.query(RiskManagementInspectionTask)
- query = query.filter(RiskManagementInspectionTask.del_flag != '2')
- query = query.filter(RiskManagementInspectionTask.id == id)
- return query.first()
- def inspection_task_children_task_id_get_inspection_task_children_task_info(db,id):
- query = db.query(RiskManagementInspectionTaskChildrenTask)
- query = query.filter(RiskManagementInspectionTaskChildrenTask.del_flag != '2')
- query = query.filter(RiskManagementInspectionTaskChildrenTask.id == id)
- return query.first()
- def inspection_task_children_task_id_get_inspection_task_children_task_log_info(db,children_task_id):
- query = db.query(RiskManagementInspectionTaskChildrenTaskLog)
- query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.del_flag != '2')
- query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.children_task_id == children_task_id)
- return query.all()
- def risk_task_id_get_risk_task_info(db,id):
- query = db.query(RiskManagementRiskTask)
- query = query.filter(RiskManagementRiskTask.del_flag != '2')
- query = query.filter(RiskManagementRiskTask.id == id)
- return query.first()
- def risk_task_children_task_id_get_risk_task_children_task_info(db,id):
- query = db.query(RiskManagementRiskTaskChildrenTask)
- query = query.filter(RiskManagementRiskTaskChildrenTask.del_flag != '2')
- query = query.filter(RiskManagementRiskTaskChildrenTask.id == id)
- return query.first()
- def risk_task_children_task_id_get_risk_task_children_task_log_info(db,children_task_id):
- query = db.query(RiskManagementRiskTaskChildrenTaskLog)
- query = query.filter(RiskManagementRiskTaskChildrenTaskLog.del_flag != '2')
- query = query.filter(RiskManagementRiskTaskChildrenTaskLog.children_task_id == children_task_id)
- return query.all()
- def resource_task_id_get_resource_task_info(db,id):
- query = db.query(RiskManagementRescueResourcesTask)
- query = query.filter(RiskManagementRescueResourcesTask.del_flag != '2')
- query = query.filter(RiskManagementRescueResourcesTask.id == id)
- return query.first()
- def resource_task_children_task_id_get_resource_task_children_task_info(db,id):
- query = db.query(RiskManagementRescueResourcesTaskChildrenTask)
- query = query.filter(RiskManagementRescueResourcesTaskChildrenTask.del_flag != '2')
- query = query.filter(RiskManagementRescueResourcesTaskChildrenTask.id == id)
- return query.first()
- def resource_task_children_task_id_get_resource_task_children_task_log_info(db,children_task_id):
- query = db.query(RiskManagementRescueResourcesTaskChildrenTaskLog)
- query = query.filter(RiskManagementRescueResourcesTaskChildrenTaskLog.del_flag != '2')
- query = query.filter(RiskManagementRescueResourcesTaskChildrenTaskLog.children_task_id == children_task_id)
- return query.all()
- def get_file_query_fun(db,from_scenario,foreign_key):
- file_query = db.query(RiskManagementFile)
- file_query = file_query.filter(RiskManagementFile.del_flag != '2')
- file_query = file_query.filter(RiskManagementFile.from_scenario == from_scenario)
- file_query = file_query.filter(RiskManagementFile.foreign_key == foreign_key)
- files = file_query.all()
- result = [{
- "uid": file.file_id,
- "status": file.status,
- "name": file.file_name_desc,
- "url": file.file_name #"/api/file/download/%s" %
- } for file in files]
- return result
- def user_id_get_task_range(db,user_id):
- query = db.query(RiskManagementInspectionUser)
- query = query.filter(RiskManagementInspectionUser.del_flag!='2')
- query = query.filter(RiskManagementInspectionUser.user_id==user_id)
- area_code_list = query.all()
- result = []
- for i in area_code_list:
- task_range = area_code_get_task_range(i.area_code)
- if task_range not in result:
- result.append(task_range)
- return result
|