Commit 88aa9901 by dong

fix20221125

parent b89d70af
......@@ -31,7 +31,7 @@ def file_delete(file_del_list, project_id):
if file_del_list:
for file_id in file_del_list:
if file_id:
file_obj = ProjectFile.query.filter_by(id=file_id, project_id=project_id, file_type=1).first()
file_obj = ProjectFile.query.filter_by(id=file_id, project_manager_id=project_id, file_type=1).first()
db.session.delete(file_obj)
db.session.commit()
return 'ok'
......@@ -70,19 +70,20 @@ def search_project1():
try:
project_obj = ProjectManagement.query.filter(
and_(ProjectManagement.project_name.like('%{}%'.format(project_name)) if project_name else text(''),
ProjectManagement.project_name.like('%{}%'.format(project_name)) if project_name else text(''),
ProjectManagement.project_stalker == project_stalker if project_stalker else text(''),
ProjectManagement.project_name == project_name if project_name else text(''),
ProjectManagement.district == district if district else text(''),
ProjectManagement.development_area == development_area if development_area else text(''),
ProjectManagement.investor_name >= investor_name[0] if investor_name else text(''),
ProjectManagement.investor_name < investor_name[1] if investor_name else text(''),
ProjectManagement.investor_district == investor_district if investor_district else text(''),
ProjectManagement.investor_district.like('%{}%'.format(investor_district)) if investor_district else text(''),
ProjectManagement.industry == industry if industry else text(''),
ProjectManagement.investment_volume == investment_volume if investment_volume else text(''),
ProjectManagement.project_progress == project_progress if project_progress else text(''),
ProjectManagement.project_year == project_year if project_year else text(''),
))
ProjectManagement.is_delete == 0
)
if not project_obj.all():
return jsonify(code=RET.NODATA, msg='没有符合条件的数据!')
......@@ -128,8 +129,8 @@ def check_project_detail1():
if not project_id:
return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
try:
project_obj_list = ProjectManagement.query.filter_by(id=project_id)
data = [{"id": project_obj.id,
project_obj = ProjectManagement.query.filter_by(id=project_id).first()
project_data = {"id": project_obj.id,
"project_stalker": project_obj.project_stalker, # 项目跟踪
"project_name": project_obj.project_name, # 项目名称
"district": project_obj.district, # 项目所在地
......@@ -146,7 +147,7 @@ def check_project_detail1():
"project_year": project_obj.project_year, # 项目年份
"upload_unity": project_obj.upload_unity, # 上传部门
"upload_people": project_obj.upload_people, # 上传人
"upload_time": project_obj.upload_time, # 上传时间
"upload_time": project_obj.upload_time.strftime("%Y-%m-%d %H:%M:%S"), # 上传时间
"project_num": project_obj.project_num, # 项目编号
"project_source": project_obj.project_source, # 项目来源
"project_unity": project_obj.project_unity, # 项目申报单位
......@@ -173,8 +174,14 @@ def check_project_detail1():
"investor_people": project_obj.investor_people, # 投资方联系人
"investor_mobile": project_obj.investor_mobile, # 投资方电话
"investor_address": project_obj.investor_address, # 投资方联系地址
} for project_obj in project_obj_list]
return jsonify(code=RET.OK, data={"data": data, "msg": "数据获取成功!"})
}
file_obj_list = project_obj.project_files1
file_data = [{
"id": file_obj.id,
"file_url": file_obj.file_url,
"file_name": file_obj.file_name,
} for file_obj in file_obj_list]
return jsonify(code=RET.OK, data={"data": project_data, "file_data": file_data, "msg": "数据获取成功!"})
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="操作失败!数据库查询错误")
......@@ -196,10 +203,6 @@ def download_project_template():
# 批量导入
@api_manage.route("/UploadProjectData2", methods=["POST"])
def upload_project_data2():
# 获取上传的文件
token = request.headers['token']
action_name = '批量导入'
token = request.headers['token']
try:
user_obj = verify_token(token)
......@@ -305,8 +308,9 @@ def upload_project_data2():
country=country,
provence=provence,
city=city,
investor_district=provence + "/" + city,
industry=industry1 + '/' + industry2,
investment_volume=investment_volume,
investment_volume=country + provence + city,
construction_content=construction_content,
construction_nature=construction_nature,
project_address=project_address,
......@@ -325,6 +329,7 @@ def upload_project_data2():
upload_unity=user_unity,
upload_people=user_name,
upload_time=file_time,
is_delete=0
)
db.session.add(project_obj)
db.session.commit()
......@@ -498,88 +503,6 @@ def batch_delete1():
return jsonify(code=RET.DBERR, msg="批量删除操作失败!")
# # 项目详情信息/编辑页的数据展示
# @api_manage.route("/CheckProjectDetail2", methods=["POST"])
# def check_project_detail2():
# req_dic = request.get_json()
# project_id = req_dic['project_id']
# token = request.headers['token']
# # year = str(datetime.now().year)
# try:
# project_obj = ProjectManagement.query.filter_by(id=project_id).first()
# # project_num = project_obj1.project_num
# # # 先查找本年份的,确保是最新的项目信息。如果没有本年的就用往年的
# # project_obj2 = ProjectManagement.query.filter(
# # ProjectManagement.project_num == project_num,
# # ProjectManagement.upload_time.like('%{}%'.format(year))
# # ).first()
# # if project_obj2:
# # project_obj = project_obj2
# # project_id = project_obj2.id
# # else:
# # project_obj = project_obj1
# project_data = {"project_stalker": project_obj.project_stalker,
# "project_name": project_obj.project_name,
# "district": project_obj.district,
# "development_area": project_obj.development_area,
# "attract_name": project_obj.attract_name,
# "investor_name": project_obj.investor_name,
# "industry": project_obj.industry,
# "investment_volume": project_obj.investment_volume,
# "construction_content": project_obj.construction_content,
# "project_address": project_obj.project_address,
# "project_progress": project_obj.project_progress,
# "project_problem": project_obj.project_problem,
# "upload_unity": project_obj.upload_unity,
# "upload_people": project_obj.upload_people,
# "upload_time": project_obj.upload_time,
# "project_num": project_obj.project_num,
# "project_source": project_obj.project_source,
# "project_unity": project_obj.project_unity,
# "is_development_project": project_obj.is_development_project,
# "sign_time": project_obj.sign_time,
# "start_time": project_obj.start_time,
# "end_time": project_obj.end_time,
# "investor_rank": project_obj.investor_rank,
# "is_transf_project": project_obj.is_transf_project,
# "country": project_obj.country,
# "provence": project_obj.provence,
# "city": project_obj.city,
# "job_num": project_obj.job_num,
# "new_value": project_obj.new_value,
# "revenue": project_obj.revenue,
# "use_land": project_obj.use_land,
# "new_land": project_obj.new_land,
# "construction_nature": project_obj.construction_nature,
# "is_fixed_investment": project_obj.is_fixed_investment,
# "investment_year": project_obj.investment_year,
#
# "investment_history": project_obj.investment_history,
# "cooperation_way": project_obj.cooperation_way,
# "set_project_status": project_obj.set_project_status,
# "investor_people": project_obj.investor_people,
# "investor_mobile": project_obj.investor_mobile,
# "investor_address": project_obj.investor_address,
# }
# file_obj_list = ProjectFile.query.filter_by(project_id=project_id, file_type=1, flag=5).all()
# file_data = []
# if file_obj_list:
# file_data = [{
# "id": file_obj.id,
# "file_url": file_obj.file_url,
# "file_name": file_obj.file_name,
# "project_id": file_obj.project_id,
# "file_type": file_obj.file_type
# } for file_obj in file_obj_list]
#
# return jsonify(code=RET.OK, data={"project_data": project_data,
# "file_data": file_data,
# "msg": "数据获取成功!"})
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="操作失败!数据库查询错误")
# 项目编辑
@api_manage.route("/ProjectEdit1", methods=["POST"])
def project_edit():
......@@ -600,7 +523,6 @@ def project_edit():
project_problem = request.form['project_problem']
upload_unity = request.form['upload_unity']
upload_people = request.form['upload_people']
upload_time = request.form['upload_time']
project_num = request.form['project_num']
project_source = request.form['project_source']
project_unity = request.form['project_unity']
......@@ -631,8 +553,7 @@ def project_edit():
token = request.headers['token']
edit_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
flag = 0 # 记录是否更新了最新进展、待解决问题
upload_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
......@@ -658,7 +579,7 @@ def project_edit():
project_obj.project_problem = project_problem
project_obj.upload_unity = upload_unity
project_obj.upload_people = upload_people
project_obj.upload_time = upload_time
# project_obj.upload_time = upload_time
project_obj.project_num = project_num
project_obj.project_source = project_source
project_obj.project_unity = project_unity
......@@ -671,6 +592,7 @@ def project_edit():
project_obj.country = country
project_obj.provence = provence
project_obj.city = city
project_obj.investor_district = country + provence + city
project_obj.job_num = job_num
project_obj.new_value = new_value
project_obj.revenue = revenue
......@@ -685,7 +607,6 @@ def project_edit():
project_obj.investor_people = investor_people
project_obj.investor_mobile = investor_mobile
project_obj.investor_address = investor_address
db.session.commit()
# 删除文件和图片
result = file_delete(file_del_list, project_id)
if result == 'error':
......@@ -701,19 +622,20 @@ def project_edit():
# 存入数据库
file_obj = ProjectFile(flag=5,
file_type=1,
# project_id=project_id,
file_url=file_url,
file_name=file_name,
upload_time=upload_time,
upload_people=upload_people,
upload_people_id=user_id,
project_id=project_id
project_manager_id=project_id
)
db.session.add(file_obj)
db.session.commit()
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="文件上传失败!")
db.session.commit()
return jsonify(code=RET.OK, msg="修改成功!")
except Exception as e:
db.session.rollback()
......@@ -721,3 +643,716 @@ def project_edit():
return jsonify(code=RET.DBERR, msg="查询数据库错误!")
"""指标分析 山西指标数据"""
# 下载模板
@api_manage.route("/DownloadProjectTemplate1", methods=["POST"])
def download_project_template1():
token = request.headers['token']
req_dic = request.get_json()
flag = req_dic['flag'] # 1为山西省各市完成情况表,2为晋城市及县区年度目标表,3为晋城市及县区固投到位资金完成情况
try:
user_obj = verify_token(token)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
project_template = ''
if flag == 1:
project_template = "http://39.100.39.50:8008/aaa_statics/template_file/山西省各市完成情况表.xlsx"
if flag == 2:
project_template = "http://39.100.39.50:8008/aaa_statics/template_file/晋城市及县区年度目标表.xls"
if flag == 3:
project_template = "http://39.100.39.50:8008/aaa_statics/template_file/晋城市及县区固投到位资金完成情况.xls"
return jsonify(code=RET.OK, data=project_template, msg="模板下载成功!")
# 上传山西省地市指标
@api_manage.route("/UploadShanxiData", methods=["POST"])
def upload_shanxi_data():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
# 上传的文件
file = request.files['file']
print(file.filename) # 打印文件名
data_time = request.form['data_time']
# file_name = file.filename
upload_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
try:
f = file.read() # 文件内容
data = xlrd.open_workbook(file_contents=f)
table = data.sheets()[0]
names = data.sheet_names() # 返回book中所有工作表的名字
status = data.sheet_loaded(names[0]) # 检查sheet1是否导入完毕
print(status)
nrows = table.nrows # 获取该sheet中的有效行数
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.THIRDERR, msg="读取文件失败!")
success_num = 0
row_list = [table.row_values(i) for i in range(3, nrows)]
for i in range(0, len(row_list)):
row_content = row_list[i]
if not row_content:
return jsonify(code=RET.NODATA,
msg="表格内无有效数据!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。(注:第三行为首行有效数据不能为空、第一行和第二行无法读取。)")
try:
district_name = row_content[0] # 区县名称
sign_money = row_content[1] # 签约金额
sign_target_money = row_content[2] # 目标金额
sign_finish_rate = row_content[3] # 完成率
plan_invest_money = row_content[4] # 计划投资额
plan_target_money = row_content[5] # 目标计划投资额
plan_finish_rate = row_content[6] # 计划投资额完成率
arrive_money = row_content[7] # 资金到位
arrive_target_money = row_content[8] # 目标资金到位
arrive_finish_rate = row_content[9] # 计划投资额完成率
except Exception as e:
# 表示操作失败,回滚数据库操作
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据异常!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。")
if not district_name:
return jsonify(code=RET.PARAMERR, msg='区县名称不能为空!')
try:
target_obj = ShanxiTarget.query.filter_by(district_name=district_name, data_time=data_time).first()
if target_obj: # 更新
# target_obj.file_name = target_obj.data_time + '全省数据'
target_obj.data_time = data_time
target_obj.upload_time = upload_time
target_obj.upload_unit = user_unity
target_obj.upload_people = user_name
target_obj.district_name = district_name
target_obj.sign_money = sign_money
target_obj.sign_target_money = sign_target_money
target_obj.sign_finish_rate = sign_finish_rate
target_obj.plan_invest_money = plan_invest_money
target_obj.plan_target_money = plan_target_money
target_obj.plan_finish_rate = plan_finish_rate
target_obj.arrive_money = arrive_money
target_obj.arrive_target_money = arrive_target_money
target_obj.arrive_finish_rate = arrive_finish_rate
db.session.commit()
success_num += 1
continue
else:
# 写入数据库
# file_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
target_obj = ShanxiTarget(
# file_name=file_name,
is_delete=0,
data_time=data_time,
upload_time=upload_time,
upload_unit=user_unity,
upload_people=user_name,
district_name=district_name,
sign_money=sign_money,
sign_target_money=sign_target_money,
sign_finish_rate=sign_finish_rate,
plan_invest_money=plan_invest_money,
plan_target_money=plan_target_money,
plan_finish_rate=plan_finish_rate,
arrive_money=arrive_money,
arrive_target_money=arrive_target_money,
arrive_finish_rate=arrive_finish_rate,
)
db.session.add(target_obj)
db.session.commit()
success_num += 1
continue
except Exception as e:
# 表示操作失败,回滚数据库操作
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库异常")
if success_num > 0:
return jsonify(code=RET.OK,
msg='上传成功!数据上传 {} 条数据'.format(success_num))
else:
return jsonify(code=RET.DATAERR, msg='无新数据上传。')
# 概览数据列表(山西指标上传页数据列表展示)
@api_manage.route("/ShanxiDataList", methods=["POST"])
def shanxi_data_list():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
year = req_dic['year']
current_year = datetime.now().year
try:
target_obj_list = ShanxiTarget.query.filter(ShanxiTarget.data_time.like('%{}%'.format(year) if year else current_year)).all()
data_time_set = set(target_obj.data_time for target_obj in target_obj_list)
# 收集上传周期
data_li = []
for data_time in list(data_time_set):
target_obj = ShanxiTarget.query.filter_by(data_time=data_time).first()
data = {"data_time": target_obj.data_time,
"upload_time": target_obj.upload_time,
"upload_unit": target_obj.upload_unit,
"upload_people": target_obj.upload_people}
data_li.append(data)
return jsonify(code=RET.OK, data=data_li, msg='获取成功!')
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="查询数据库错误!")
# 新增/编辑山西指标上传页数据
@api_manage.route("/AddEditShanxiData", methods=["POST"])
def add_shanxi_data():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
data_list = req_dic["data_list"]
upload_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
for data in data_list:
data_time = data['data_time'] # 数据年份
district_name = data['district_name'] # 区县名称
sign_money = data['sign_money'] # 签约金额
sign_target_money = data['sign_target_money'] # 目标金额
sign_finish_rate = data['sign_finish_rate'] # 完成率
plan_invest_money = data['plan_invest_money'] # 计划投资额
plan_target_money = data['plan_target_money'] # 目标计划投资额
plan_finish_rate = data['plan_finish_rate'] # 计划投资额完成率
arrive_money = data['arrive_money'] # 资金到位
arrive_target_money = data['arrive_target_money'] # 目标资金到位
arrive_finish_rate = data['arrive_finish_rate'] # 计划投资额完成率
try:
target_obj = ShanxiTarget.query.filter_by(district_name=district_name, data_time=data_time).first()
if target_obj: # 更新
target_obj.data_time = data_time
target_obj.upload_time = upload_time
target_obj.upload_unit = user_unity
target_obj.upload_people = user_name
target_obj.district_name = district_name
target_obj.sign_money = sign_money
target_obj.sign_target_money = sign_target_money
target_obj.sign_finish_rate = sign_finish_rate
target_obj.plan_invest_money = plan_invest_money
target_obj.plan_target_money = plan_target_money
target_obj.plan_finish_rate = plan_finish_rate
target_obj.arrive_money = arrive_money
target_obj.arrive_target_money = arrive_target_money
target_obj.arrive_finish_rate = arrive_finish_rate
db.session.commit()
else:
target_obj = ShanxiTarget(
is_delete=0,
data_time=data_time,
upload_time=upload_time,
upload_unit=user_unity,
upload_people=user_name,
district_name=district_name,
sign_money=sign_money,
sign_target_money=sign_target_money,
sign_finish_rate=sign_finish_rate,
plan_invest_money=plan_invest_money,
plan_target_money=plan_target_money,
plan_finish_rate=plan_finish_rate,
arrive_money=arrive_money,
arrive_target_money=arrive_target_money,
arrive_finish_rate=arrive_finish_rate
)
db.session.add(target_obj)
db.session.commit()
continue
except Exception as e:
# 表示操作失败,回滚数据库操作
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库异常,新增失败!")
return jsonify(code=RET.OK, msg='新增成功!')
# 详情数据列表(某周期山西各地市指标数据列表展示)
@api_manage.route("/ShanxiDataDetail", methods=["POST"])
def shanxi_data_detail():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
data_time = req_dic["data_time"]
try:
target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time).all()
data = [{
"data_time": target_obj.data_time,
"upload_time": target_obj.upload_time,
"upload_unit": target_obj.upload_unit,
"upload_people": target_obj.upload_people,
"district_name": target_obj.district_name,
"sign_money": target_obj.sign_money,
"sign_target_money": target_obj.sign_target_money,
"sign_finish_rate": target_obj.sign_finish_rate,
"plan_invest_money": target_obj.plan_invest_money,
"plan_target_money": target_obj.plan_target_money,
"plan_finish_rate": target_obj.plan_finish_rate,
"arrive_money": target_obj.arrive_money,
"arrive_target_money": target_obj.arrive_target_money,
"arrive_finish_rate": target_obj.arrive_finish_rate,
} for target_obj in target_obj_li]
return jsonify(code=RET.OK, data=data, msg="获取成功!")
except Exception as e:
# 表示操作失败,回滚数据库操作
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库异常")
# 下载数据详情
@api_manage.route("/DownloadShanxiData", methods=["POST"])
def download_shanxi_data():
token = request.headers['token']
try:
user_obj = verify_token(token)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
data_time = req_dic["data_time"]
path = './apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:8008/aaa_statics/project_file/' # 项目路径
pro_path = 'http://192.168.1.4:5000/statics/project_file/' # 项目路径
if not data_time:
return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
target_data_list = []
try:
target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time).all()
for target_obj in target_obj_li:
# 提取数据,写入xslx表格
data_list = []
district_name = target_obj.district_name
data_list.append(district_name) # 区县名称
sign_money = target_obj.sign_money
data_list.append(sign_money) # 签约金额
sign_target_money = target_obj.sign_target_money
data_list.append(sign_target_money) # 目标金额
sign_finish_rate = target_obj.sign_finish_rate
data_list.append(sign_finish_rate) # 完成率
plan_invest_money = target_obj.plan_invest_money
data_list.append(plan_invest_money) # 计划投资额
plan_target_money = target_obj.plan_target_money
data_list.append(plan_target_money) # 目标计划投资额
plan_finish_rate = target_obj.plan_finish_rate
data_list.append(plan_finish_rate) # 计划投资额完成率
arrive_money = target_obj.arrive_money
data_list.append(arrive_money) # 资金到位
arrive_target_money = target_obj.arrive_target_money
data_list.append(arrive_target_money) # 目标资金到位
arrive_finish_rate = target_obj.arrive_finish_rate
data_list.append(arrive_finish_rate) # 计划投资额完成率
target_data_list.append(data_list)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误!")
head_list = ''
sheet = ''
try:
sheet_name_titles = {
"sheet1": ["市", "签约金额(亿元)", "年度目标(亿元)", "完成率( % )", "新开工项目计划投资额(亿元)",
"年度目标(亿元)", "完成率( % )", "固定资产投资项目资金到位额(亿元)", "年度目标(亿元)", "完成率( % )"
]}
excel = xlwt.Workbook(encoding='utf-8')
# 写入表头
for i in range(len(sheet_name_titles)):
for k, v in sheet_name_titles.items():
sheet_name = k
sheet = excel.add_sheet(sheet_name)
head_list = v
print(head_list)
for j in range(len(head_list)):
sheet.write(0, j, head_list[j])
# 写入数据,从第二行(i+1)
rows = len(target_data_list)
cols = len(head_list)
for i in range(rows):
for j in range(cols):
sheet.write(i + 1, j, target_data_list[i][j])
time_stamp = '{0:%Y%m%d%H%M%S}'.format(datetime.now())
file_name = "山西省各地市指标完成情况表{}.xlsx".format(time_stamp)
excel.save(path + file_name)
return jsonify(code=RET.OK, url=pro_path + file_name, msg="导出/下载成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="批量导出操作失败!")
# 删除某时间周期的数据
@api_manage.route("/DeleteShanxiData", methods=["POST"])
def delete_shanxi_data():
token = request.headers['token']
try:
user_obj = verify_token(token)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
data_time = req_dic["data_time"]
try:
target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time).all()
for target_obj in target_obj_li:
target_obj.is_delete = 1
db.session.commit()
continue
return jsonify(code=RET.OK, msg="删除成功!")
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="查询数据库错误!")
"""指标分析 晋城指标数据"""
# 上传晋城省地市指标
@api_manage.route("/UploadJcData", methods=["POST"])
def upload_jc_data():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
# 上传的文件
file = request.files['file']
year = request.files['year'] # 年份,如'2022年'
print(file.filename) # 打印文件名
upload_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
current_year = str(datetime.now().year) + '年'
try:
f = file.read() # 文件内容
data = xlrd.open_workbook(file_contents=f)
table = data.sheets()[0]
names = data.sheet_names() # 返回book中所有工作表的名字
status = data.sheet_loaded(names[0]) # 检查sheet1是否导入完毕
print(status)
nrows = table.nrows # 获取该sheet中的有效行数
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.THIRDERR, msg="读取文件失败!")
success_num = 0
row_list = [table.row_values(i) for i in range(4, nrows)]
for i in range(0, len(row_list)):
row_content = row_list[i]
if not row_content:
return jsonify(code=RET.NODATA,
msg="表格内无有效数据!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。(注:第三行为首行有效数据不能为空、第一行和第二行无法读取。)")
try:
district_name = row_content[0] # 区县名称
money_sign = row_content[1] # 签约项目金额
rate_start = row_content[2] # 项目开工率
money_plan_invest = row_content[3] # 新开工固定资产投资项目计划投资额
money_arrive_target1 = row_content[4] # 固定资产投资项目资金到位额
money_arrive_target0 = row_content[5] # 非固定资产投资项目资金到位额
except Exception as e:
# 表示操作失败,回滚数据库操作
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据异常!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。")
if not district_name:
return jsonify(code=RET.PARAMERR, msg='区县名称不能为空!')
try:
target_obj = JcTarget.query.filter_by(district_name=district_name, year=year).first()
if target_obj: # 更新
target_obj.file_name = current_year + '年度目标数据'
target_obj.year = current_year
target_obj.upload_time = upload_time
target_obj.upload_unit = user_unity
target_obj.upload_people = user_name
target_obj.district_name = district_name
target_obj.money_sign = money_sign
target_obj.rate_start = rate_start
target_obj.money_plan_invest = money_plan_invest
target_obj.money_arrive_target1 = money_arrive_target1
target_obj.money_arrive_target0 = money_arrive_target0
db.session.commit()
success_num += 1
continue
else:
# 写入数据库
target_obj = JcTarget(
file_name=current_year + '年度目标数据',
is_delete=0,
year=current_year,
upload_time=upload_time,
upload_unit=user_unity,
upload_people=user_name,
district_name=district_name,
money_sign=money_sign,
rate_start=rate_start,
money_plan_invest=money_plan_invest,
money_arrive_target1=money_arrive_target1,
money_arrive_target0=money_arrive_target0,
)
db.session.add(target_obj)
db.session.commit()
success_num += 1
continue
except Exception as e:
# 表示操作失败,回滚数据库操作
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库异常")
if success_num > 0:
return jsonify(code=RET.OK,
msg='上传成功!数据上传 {} 条数据'.format(success_num))
else:
return jsonify(code=RET.DATAERR, msg='无新数据上传。')
# 新增/编辑晋城指标上传页数据
@api_manage.route("/AddEditJcData", methods=["POST"])
def add_jc_data():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
data_list = req_dic["data_list"]
upload_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
current_year = str(datetime.now().year) + '年'
for data in data_list:
year = data['year'] # 所属年份
district_name = data['district_name'] # 区县名称
money_sign = data['money_sign'] # 签约项目金额
rate_start = data['rate_start'] # 项目开工率
money_plan_invest = data['money_plan_invest'] # 新开工固定资产投资项目计划投资额
money_arrive_target1 = data['money_arrive_target1'] # 固定资产投资项目资金到位额
money_arrive_target0 = data['money_arrive_target0'] # 非固定资产投资项目资金到位额
try:
target_obj = JcTarget.query.filter_by(district_name=district_name, year=year).first()
if target_obj: # 更新
target_obj.district_name = district_name
target_obj.money_sign = money_sign
target_obj.rate_start = rate_start
target_obj.money_plan_invest = money_plan_invest
target_obj.money_arrive_target1 = money_arrive_target1
target_obj.money_arrive_target0 = money_arrive_target0
db.session.commit()
else:
target_obj = ShanxiTarget(
is_delete=0,
year=current_year,
upload_time=upload_time,
upload_unit=user_unity,
upload_people=user_name,
district_name=district_name,
money_sign=money_sign,
rate_start=rate_start,
money_plan_invest=money_plan_invest,
money_arrive_target1=money_arrive_target1,
money_arrive_target0=money_arrive_target0,
)
db.session.add(target_obj)
db.session.commit()
continue
except Exception as e:
# 表示操作失败,回滚数据库操作
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库异常,新增失败!")
return jsonify(code=RET.OK, msg='新增成功!')
# 概览数据列表(晋城指标上传页数据列表展示)
@api_manage.route("/JcDataList", methods=["POST"])
def jc_data_list():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
year = req_dic['year']
current_year = datetime.now().year
try:
target_obj_list = JcTarget.query.filter(
JcTarget.year.like('%{}%'.format(str(year)) if year else text('')),
JcTarget.is_delete == 0
).all()
data_time_set = set(target_obj.year for target_obj in target_obj_list)
# 收集上传周期
data_li = []
for data_time in list(data_time_set):
target_obj = JcTarget.query.filter_by(year=year).first()
data = {"year": target_obj.year,
"file_name": target_obj.file_name,
"upload_time": target_obj.upload_time,
"upload_unit": target_obj.upload_unit,
"upload_people": target_obj.upload_people}
data_li.append(data)
return jsonify(code=RET.OK, data=data_li, msg='获取成功!')
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="查询数据库错误!")
# 详情数据列表(某周期山西各地市指标数据列表展示)
@api_manage.route("/JcDataDetail", methods=["POST"])
def jc_data_detail():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_unity = user_obj.belong_organization
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="进行操作时用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
data_time = req_dic["data_time"]
try:
target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time).all()
data = [{
"data_time": target_obj.data_time,
"upload_time": target_obj.upload_time,
"upload_unit": target_obj.upload_unit,
"upload_people": target_obj.upload_people,
"district_name": target_obj.district_name,
"sign_money": target_obj.sign_money,
"sign_target_money": target_obj.sign_target_money,
"sign_finish_rate": target_obj.sign_finish_rate,
"plan_invest_money": target_obj.plan_invest_money,
"plan_target_money": target_obj.plan_target_money,
"plan_finish_rate": target_obj.plan_finish_rate,
"arrive_money": target_obj.arrive_money,
"arrive_target_money": target_obj.arrive_target_money,
"arrive_finish_rate": target_obj.arrive_finish_rate,
} for target_obj in target_obj_li]
return jsonify(code=RET.OK, data=data, msg="获取成功!")
except Exception as e:
# 表示操作失败,回滚数据库操作
db.session.rollback()
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库异常")
......@@ -742,18 +742,6 @@ def upload_project_data1():
msg="{}表格内无有效数据!".format('线索库' if data_type == 1 else '对接库' if data_type == 2
else '签约库' if data_type == 3 else '开工库' if data_type == 4 else ''))
if int(data_type) == 1: # 上传线索库
# 判断该项目名称是否已经存在
# project_num = row_content[0]
# project_name = row_content[1]
# project_obj = SikuProject.query.filter(
# SikuProject.project_name == project_name,
# SikuProject.is_delete == 0,
# ).first()
# 记录同名的项目名称
# if project_obj and project_name == project_obj.project_name:
# rep_project_num += 1
# continue
ret = upload_xiansuo_project(row_content, time_strf, upload_time, upload_unity, upload_people)
if ret == 'continue':
add_num += 1
......
......@@ -1134,6 +1134,9 @@ class ProjectFile(db.Model):
project_id = db.Column(db.Integer, db.ForeignKey("siku_project.id"), comment='外键id,项目id')
project = db.relationship('SikuProject', backref=db.backref('project_files')) # 项目1-N项目对接情况
project_manager_id = db.Column(db.Integer, db.ForeignKey("project_management.id"), comment='外键id,项目id')
project_manager = db.relationship('ProjectManagement', backref=db.backref('project_files1')) # 项目1-N项目对接情况
# 签约库-签约的第三方
class SignThree(db.Model):
......@@ -1217,4 +1220,69 @@ class ProjectManagement(db.Model):
investor_address = db.Column(db.String(30), comment='投资方联系地址')
# 项目化管理-山西省地市指标表
class ShanxiTarget(db.Model):
__tablename_ = "shanxi_target"
__table_args__ = ({'comment': '项目化管理-山西省地市指标表'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
# file_name = db.Column(db.String(30), comment='文件名称')
is_delete = db.Column(db.Integer, comment='逻辑删除')
data_time = db.Column(db.String(30), comment='数据年份')
upload_time = db.Column(db.String(30), comment='上传日期')
upload_unit = db.Column(db.String(30), comment='上传部门')
upload_people = db.Column(db.String(30), comment='上传人')
district_name = db.Column(db.String(30), comment='区县名称')
# 签约项目情况
sign_money = db.Column(db.Float, comment='签约金额')
sign_target_money = db.Column(db.Float, comment='目标金额')
sign_finish_rate = db.Column(db.Float, comment='完成率')
# 新开工固定资产投资项目计划投资完成情况
plan_invest_money = db.Column(db.Float, comment='计划投资额')
plan_target_money = db.Column(db.Float, comment='目标计划投资额')
plan_finish_rate = db.Column(db.Float, comment='计划投资额完成率')
# 固定资产投资项目资金到位情况
arrive_money = db.Column(db.Float, comment='资金到位')
arrive_target_money = db.Column(db.Float, comment='目标资金到位')
arrive_finish_rate = db.Column(db.Float, comment='计划投资额完成率')
# 项目化管理-晋城市县(市、区)、开发区指标表
class JcTarget(db.Model):
__tablename_ = "jc_target"
__table_args__ = ({'comment': '项目化管理-晋城市县(市、区)、开发区指标表'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
file_name = db.Column(db.String(30), comment='文件名称')
is_delete = db.Column(db.Integer, comment='逻辑删除')
year = db.Column(db.String(30), comment='数据年份')
upload_time = db.Column(db.String(30), comment='上传日期')
upload_unit = db.Column(db.String(30), comment='上传部门')
upload_people = db.Column(db.String(30), comment='上传人')
grade_sign = db.Column(db.Float, comment='签约项目金额')
grade_start = db.Column(db.Float, comment='项目开工率')
grade_plan_invest = db.Column(db.Float, comment='新开工固定资产投资项目计划投资额')
grade_arrive_target1 = db.Column(db.Float, comment='固定资产投资项目资金到位额')
grade_arrive_target0 = db.Column(db.Float, comment='非固定资产投资项目资金到位额')
district_name = db.Column(db.String(30), comment='区县名称')
money_sign = db.Column(db.Float, comment='签约项目金额')
rate_start = db.Column(db.Float, comment='项目开工率')
money_plan_invest = db.Column(db.Float, comment='新开工固定资产投资项目计划投资额')
money_arrive_target1 = db.Column(db.Float, comment='固定资产投资项目资金到位额')
money_arrive_target0 = db.Column(db.Float, comment='非固定资产投资项目资金到位额')
......@@ -33,7 +33,7 @@ def user_info():
"email": user.email if user.email else "" # 邮箱
}
return jsonify(code=RET.OK, msg="查询成功", data=data)
return jsonify(code=RET.NODATA, msg="无法获取信息")
return jsonify(code=RET.SESSIONERR, msg="无法获取信息")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="参数错误")
......
......@@ -548,17 +548,14 @@ def fix_user_info():
token = request.headers["token"]
user = verify_token(token)
user_id = user.id
req_dict = request.get_json()
real_name = req_dict.get("real_name")
age = req_dict.get("age")
sex = req_dict.get("sex")
name = req_dict.get("name")
position = req_dict.get("position")
try:
user_information = User.query.get(user_id)
# 姓名
if real_name:
user_information.real_name = real_name
......@@ -566,15 +563,12 @@ def fix_user_info():
# 年龄
if age:
user_information.age = age
# 性别 1 - 男 2 - 女
if sex:
user_information.sex = sex
# 职务
if position:
user_information.position = position
# 用户名
if name:
user = User.query.filter_by(name=name).filter(User.id != user_id).first()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment