Commit 837174d2 by dong

fix20221117

parent c59cb590
......@@ -3,6 +3,8 @@ import time
import datetime
import random
import re
import oss2
import pandas as pd
import xlrd
import xlsxwriter
......@@ -328,6 +330,69 @@ def update_star_project(row_content):
return 'error1'
def upload_daily_picture(file_type, file_name, file):
try:
access_key_id = "LTAI4Fkgi7DUf6jCVW3KNGwT"
access_key_secret = "ynr6TWWNOnpALn3YUICUaXwpp9w4er"
auth = oss2.Auth(access_key_id, access_key_secret)
bucket_name = "zysf-store"
endpoint = "oss-cn-beijing.aliyuncs.com"
bucket = oss2.Bucket(auth, endpoint, bucket_name)
file_name = file_name.split('.')
time_stamp = '{0:%Y%m%d%H%M%S}'.format(datetime.now())
file_name = file_name[0] + time_stamp + '.' + file_name[1]
file_url = ''
if file_type == 1:
bucket.put_object('/晋城招商图谱平台/四库管理文件/文件/' + file_name, file)
file_url = "https://{}.{}/{}".format(bucket_name, endpoint, '/晋城招商图谱平台/四库管理文件/文件/' + file_name)
if file_type == 2:
bucket.put_object('/晋城招商图谱平台/四库管理文件/图片/' + file_name, file)
file_url = "https://{}.{}/{}".format(bucket_name, endpoint, '/晋城招商图谱平台/四库管理文件/图片/' + file_name)
time.sleep(1)
return file_url
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.THIRDERR, msg='第三方系统(阿里云oss存储)出错!')
# 编辑页文件图片删除接口
def file_delete(file_del_list, img_del_list, project_id, flag):
if file_del_list:
try:
for file_id in file_del_list:
if file_id:
file_obj = ProjectFile.query.filter_by(flag=flag, id=file_id, project_id=project_id, file_type=1).first()
db.session.delete(file_obj)
db.session.commit()
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
return 'error'
if img_del_list:
try:
for img_id in img_del_list:
if img_id:
img_obj = ProjectFile.query.filter_by(flag=flag, id=img_id, project_id=project_id, file_type=2).first()
db.session.delete(img_obj)
db.session.commit()
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
return 'error'
return 'ok'
# 记录项目动态
def write_dynamic(user_name, project_id, item, time):
dynamic_obj = ProjectDynamicLog(operation_people=user_name,
project_id=project_id,
item=item,
time=time,
)
db.session.add(dynamic_obj)
db.session.commit()
# 线索库搜索接口
@api_manage.route("/SearchProject", methods=["POST"])
def search_project():
......@@ -607,7 +672,7 @@ def batch_del():
for select_id in select_id_list:
project_obj = SikuProject.query.get(select_id)
if not project_obj:
return jsonify(code=RET.NODATA, msg="查无此数据!")
return jsonify(code=RET.NODATA, msg="查无此项目!")
project_obj.is_delete = 1
db.session.commit()
continue
......@@ -752,6 +817,7 @@ def distribute_project():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
......@@ -761,7 +827,7 @@ def distribute_project():
for district in district_list:
old_project_obj = SikuProject.query.get(project_id)
if not old_project_obj:
return jsonify(code=RET.NODATA, msg="查无此数据!")
return jsonify(code=RET.NODATA, msg="查无此项目!")
old_distribute_condition = old_project_obj.distribute_condition
if old_distribute_condition and old_distribute_condition == district:
continue
......@@ -776,6 +842,14 @@ def distribute_project():
# 构造项目编号
time_strf = datetime.now().strftime("%Y%m%d")
project_obj_list = SikuProject.query.all()
flag = False
for project_obj in project_obj_list:
if project_obj.project_name == old_project_obj.project_name and \
project_obj.distribute_condition == district:
flag = True
break
if flag:
continue
max_project_num = ''
if project_obj_list:
max_project_num = max([project_obj.project_num for project_obj in project_obj_list])
......@@ -820,14 +894,20 @@ def distribute_project():
db.session.add(new_project)
db.session.commit()
district_list1.append(district)
if district_list1:
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '分发至 {} 对接库'.format(district_list1), time1)
return jsonify(code=RET.OK, msg="该项目已分发至 {} 对接库。".format(district_list1))
else:
return jsonify(code=RET.NODATA, msg="不可重复分发!".format(district_list1))
return jsonify(code=RET.DATAEXIST, msg="已存在,不可重复分发!".format(district_list1))
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DATAERR, msg="分发操作出错!")
return jsonify(code=RET.DBERR, msg="分发操作出错!")
# 获取项目详情
......@@ -846,7 +926,7 @@ def get_project_detail():
try:
project_obj = SikuProject.query.get(project_id)
if not project_obj:
return jsonify(code=RET.NODATA, msg="查无此数据!")
return jsonify(code=RET.NODATA, msg="查无此项目!")
data = {
"project_name": project_obj.project_name,
......@@ -874,18 +954,25 @@ def get_project_detail():
return jsonify(code=RET.OK, data=data, msg="项目详情获取成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DATAERR, msg="数据查询失败!")
return jsonify(code=RET.DBERR, msg="数据查询失败!")
# 编辑项目详情
@api_manage.route("/EditProjectDetail", methods=["POST"])
def edit_project_detail():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
req_dic = request.get_json()
project_id = req_dic['project_id']
try:
project_obj = SikuProject.query.get(project_id)
if not project_obj:
return jsonify(code=RET.NODATA, msg="查无此数据!")
return jsonify(code=RET.NODATA, msg="查无此项目!")
project_obj.project_name = req_dic['project_name']
project_obj.investor_name = req_dic['investor_name']
project_obj.investor_district = req_dic['investor_district']
......@@ -904,10 +991,14 @@ def edit_project_detail():
project_obj.other_source = req_dic['other_source']
project_obj.remark = req_dic['remark']
db.session.commit()
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '编辑了项目', time1)
return jsonify(code=RET.OK, msg="编辑成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DATAERR, msg="编辑操作出错!")
return jsonify(code=RET.DBERR, msg="编辑操作出错!")
# 转办功能(转办个其他区县,改变拟落地区域字段内容)
......@@ -916,6 +1007,7 @@ def project_transition():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
......@@ -927,7 +1019,7 @@ def project_transition():
try:
project_obj = SikuProject.query.filter_by(id=project_id, flag=flag).first()
if not project_obj:
return jsonify(code=RET.NODATA, msg="查无此数据!")
return jsonify(code=RET.NODATA, msg="查无此项目!")
if flag == 2:
# 对接库 转办:把选定的项目转给其它县区,此项目的拟落地区域,变为新的县区
......@@ -939,188 +1031,913 @@ def project_transition():
project_obj.project_to_area = district
project_obj.flag = 2
db.session.commit()
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '将项目转办至{}。'.format(district), time1)
return jsonify(code=RET.OK, msg="转办成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DATAERR, msg="转办操作出错!")
return jsonify(code=RET.DBERR, msg="转办操作出错!")
# 流转功能
@api_manage.route("/ProjectMove", methods=["POST"])
def project_move():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
try:
req_dic = request.get_json()
project_id = req_dic['project_id']
flag = req_dic['flag'] # 流转到:3为签约库, 4为开工库
project_obj = SikuProject.query.get(project_id)
if not project_obj:
return jsonify(code=RET.NODATA, msg="查无此项目!")
if project_obj.flag == flag:
return jsonify(code=RET.PARAMERR, msg="参数错误!")
pass
project_obj.flag = flag
db.session.commit()
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '将项目流转至 {} 。'.format('签约库' if flag == 3 else '开工库' if flag == 4 else ''), time1)
# 批量导出-线索库数据
# @api_manage.route("/BatchExportProject", methods=["POST"])
# def batch_export_project():
# req_dic = request.get_json()
# token = request.headers['token']
#
# try:
# user_obj = verify_token(token)
# user_name = user_obj.real_name
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.SESSIONERR, msg="进行批量导入操作时用户信息校验失败,请重新登陆后尝试!")
#
# select_id_list = req_dic["select_id_list"]
# path = './apps/statics/project_file/'
# path = 'D:/中研项目代码/flask_jincheng/apps/statics/project_file/'
# # pro_path = 'http://39.100.39.50:5051/statics/project_file/' # 项目路径
# if not select_id_list:
# return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
# target_data_list = []
# for select_id in select_id_list:
# try:
# project_obj = SikuProject.query.filter_by(id=select_id).first()
# # 提取数据,写入xslx表格
# data_list = []
# distribute_condition = project_obj.distribute_condition # 分发情况
# data_list.append(distribute_condition)
# project_name = project_obj.project_name # 项目名称
# data_list.append(project_name)
# investor_name = project_obj.investor_name # 投资方名称
# data_list.append(investor_name)
# investor_district = project_obj.investor_district # 投资方所在地
# data_list.append(investor_district)
# project_type = project_obj.project_type # 项目类型
# data_list.append(project_type)
# investment_volume = project_obj.investment_volume # 总投资额(万元)
# data_list.append(investment_volume)
# project_year = project_obj.project_year # 项目年份
# data_list.append(project_year)
# project_info = project_obj.project_info # 项目基本情况
# data_list.append(project_info)
# thread_people = project_obj.thread_people # 线索提供人
# data_list.append(thread_people)
# thread_people_mobile = project_obj.thread_people_mobile # 线索提供人联系方式
# data_list.append(thread_people_mobile)
# thread_progress = project_obj.thread_progress # 线索进展
# data_list.append(thread_progress)
# target_data_list.append(data_list)
# # 记录项目动态
# time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库查询错误!")
# try:
# sheet_name_titles = {
# "sheet1": ["项目编号(自动生成)", "项目名称", "投资方名称", "投资方所在地", "项目类型",
# "总投资额(万元)", "拟引资额(万元)", "项目基本情况", "项目方基本情况", "线索提供人",
# "单位及职务", "联系方式", "备注",]}
#
# # 大标题(居中、加粗、字号)
# style = xlwt.XFStyle()
# al = xlwt.Alignment()
# al.horz = 0x02 # 设置水平居中
# al.vert = 0x01 # 设置垂直居中
# style.alignment = al
# # 为样式创建字体
# font = xlwt.Font()
# font.name = 'Times New Roman' # 字体
# font.bold = True # 加粗
# font.height = 0x00C8 * 2
# # 设置样式
# style.font = font
#
# # 表头(居中、加粗)
# style1 = xlwt.XFStyle()
# al1 = xlwt.Alignment()
# al1.horz = 0x02 # 设置水平居中
# al1.vert = 0x01 # 设置垂直居中
# style1.alignment = al1
# # style1.alignment.wrap = 1 # 设置自动换行
# # 为样式创建字体
# font = xlwt.Font()
# font.name = 'Times New Roman' # 字体
# font.bold = True # 加粗
# # 设置样式
# style1.font = font
# # 设置边框(THIN实线/DASHED虚线)
# borders = xlwt.Borders()
# borders.left = xlwt.Borders.THIN
# borders.right = xlwt.Borders.THIN
# borders.top = xlwt.Borders.THIN
# borders.bottom = xlwt.Borders.THIN
# style1.borders = borders # Add Borders to Style
#
# # 普通内容
# style2 = xlwt.XFStyle()
# al2 = xlwt.Alignment()
# al2.horz = 0x02 # 设置水平居中
# al2.vert = 0x01 # 设置垂直居中
# style2.alignment = al2
# style2.alignment.wrap = 1 # 设置自动换行
# # 设置边框(THIN实线/DASHED虚线)
# borders = xlwt.Borders()
# borders.left = xlwt.Borders.THIN
# borders.right = xlwt.Borders.THIN
# borders.top = xlwt.Borders.THIN
# borders.bottom = xlwt.Borders.THIN
# style2.borders = borders # Add Borders to Style
#
# # 需要左对齐的 7建设内容、12最新进展、13需要解决的问题
# style3 = xlwt.XFStyle()
# al3 = xlwt.Alignment()
# al3.horz = 0x01 # 设置左对齐
# al3.vert = 0x01 # 设置垂直居中
# style3.alignment = al3
# style3.alignment.wrap = 1 # 设置自动换行
# # 设置边框(THIN实线/DASHED虚线)
# borders = xlwt.Borders()
# borders.left = xlwt.Borders.THIN
# borders.right = xlwt.Borders.THIN
# borders.top = xlwt.Borders.THIN
# borders.bottom = xlwt.Borders.THIN
# style3.borders = borders # Add Borders to Style
#
# # 创建excel
# excel = xlwt.Workbook(encoding='utf-8')
# # 写入表头
# for k, v in sheet_name_titles.items():
# sheet_name = k
# sheet = excel.add_sheet(sheet_name)
# # 写入大标题
# title_name = '线索库'
# # 合并单元格,合并第2行到第4行的第4列到第5列
# sheet.write_merge(0, 0, 0, 17, title_name, style)
# tall_style = xlwt.easyxf('font:height 720')
# sheet.row(0).set_style(tall_style)
# # 写入表头
# head_list = v
# for j in range(len(head_list)):
# sheet.write(1, j, head_list[j], style1)
# # 设置单元格列宽
# if j in [7, 12, 13]:
# sheet.col(j).width = 50 * 256
# else:
# sheet.col(j).width = 30 * 256
#
# """===================我是一条木得感情的分割线============================="""
#
# # 写入内容
# for index, value_list in enumerate(target_data_list, 2):
# for i, value in enumerate(value_list):
# if i in [7, 12, 13]:
# sheet.write(index, i, value, style3)
# else:
# sheet.write(index, i, value, style2)
# 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="批量导出操作失败!")
return jsonify(code=RET.OK, msg="流转成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="流转操作出错!")
# 新增项目对接/推进情况(进展)
@api_manage.route("/AddProgress", methods=["POST"])
def add_progress():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
add_time = datetime.now()
try:
req_dic = request.get_json()
project_id = req_dic['project_id']
info = req_dic['info']
flag = req_dic['flag'] # 2为对接库,3为签约库,4为开工库
progress_obj = ProgressCondition(
flag=flag,
add_time=add_time,
info=info,
project_id=project_id
)
db.session.add(progress_obj)
db.session.commit()
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '新增了进展情况。', time1)
return jsonify(code=RET.OK, msg="进展情况新增成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="进展情况新增失败!")
# 编辑项目对接/推进情况(进展)
@api_manage.route("/EditProgress", methods=["POST"]) # 对接库-编辑项目对接情况(进展)
def edit_progress():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
try:
req_dic = request.get_json()
progress_id = req_dic['progress_id']
info = req_dic['info']
if not info:
return jsonify(code=RET.NODATA, msg="无变更内容!")
progress_obj = ProgressCondition.query.get(progress_id)
project_id = progress_obj.project_id
progress_obj.info = info
db.session.commit()
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '编辑了进展情况。', time1)
return jsonify(code=RET.OK, msg="进展情况编辑成功!")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="进展情况编辑失败!")
# 获取项目详情信息(对接库、签约库、开工库)
@api_manage.route("/CheckProjectDetail", methods=["POST"])
def check_project_detail():
req_dic = request.get_json()
project_id = req_dic['project_id']
# flag = req_dic['flag'] # 2为对接库,3为签约库,4为开工库
token = request.headers['token']
try:
project_obj = SikuProject.query.get(project_id)
flag = project_obj.flag
if flag == 2:
project_data = {"id": project_obj.id,
"project_name": project_obj.project_name, # 项目名称
"investor_name": project_obj.investor_name, # 投资方名称
"investor_district": project_obj.investor_district, # 投资方所在地
"project_type": project_obj.project_type, # 项目类型
"investment_volume": project_obj.investment_volume, # 总投资额(万元)
"project_num": project_obj.project_num, # 项目编号
"investment_volume1": project_obj.investment_volume1, # 拟引资额(万元)
"project_schedule": project_obj.project_schedule, # 项目进展
"stop_reason": project_obj.stop_reason, # 暂停或终止原因
"remark": project_obj.remark, # 备注
"project_to_area": project_obj.project_to_area, # 拟落地区域
"development_area": project_obj.development_area, # 开发区
"garden": project_obj.garden, # 园区
"project_address": project_obj.project_address, # 项目详细地址
# "joint_condition": project_obj.joint_condition, # 项目对接情况
"project_problem": project_obj.project_problem, # 项目当前存在的问题
"project_stalker": project_obj.project_stalker, # 项目跟踪人
"joint_person": project_obj.joint_person, # 对接人
"joint_person_unity": project_obj.joint_person_unity, # 对接人单位及职务
"joint_person_mobile": project_obj.joint_person_mobile, # 对接人联系方式
"project_people": project_obj.project_people, # 项目方联系人
"project_people_unity": project_obj.project_people_unity, # 项目方单位或职务
"project_people_mobile": project_obj.project_people_mobile, # 项目方联系方式
}
if flag == 3:
project_data = {"id": project_obj.id,
"project_name": project_obj.project_name, # 项目名称
"investor_name": project_obj.investor_name, # 投资方名称
"investor_district": project_obj.investor_district, # 投资方所在地
"project_type": project_obj.project_type, # 项目类型
"investment_volume": project_obj.investment_volume, # 总投资额(万元总投资额(万元)
"project_num": project_obj.project_num, # 项目编号
"investment_volume1": project_obj.investment_volume1, # 拟引资额(万元拟引资额(万元)
"project_schedule": project_obj.project_schedule, # 项目进展
"stop_reason": project_obj.stop_reason, # 暂停或终止原因
"remark": project_obj.remark, # 备注
"development_area": project_obj.development_area, # 开发区
"garden": project_obj.garden, # 园区
"project_address": project_obj.project_address, # 项目详细地址
# "joint_condition": project_obj.joint_condition, # 项目对接情况
"project_stalker": project_obj.project_stalker, # 项目跟踪人
"joint_person": project_obj.joint_person, # 对接人
"joint_person_unity": project_obj.joint_person_unity, # 对接人单位及职务
"joint_person_mobile": project_obj.joint_person_mobile, # 对接人联系方式
"project_people": project_obj.project_people, # 项目方联系人
"project_people_unity": project_obj.project_people_unity, # 项目方单位或职务
"project_people_mobile": project_obj.project_people_mobile, # 项目方联系方式
"attract_name": project_obj.attract_name, # 引资方名称
"Party_A_name": project_obj.Party_A_name, # 签约甲方名称
"Party_A_people": project_obj.Party_A_people, # 签约甲方联系人
"Party_A_mobile": project_obj.Party_A_mobile, # 签约甲方联系方式
"Party_B_name": project_obj.Party_B_name, # 签约乙方名称
"Party_B_people": project_obj.Party_B_people, # 签约乙方联系人
"Party_B_mobile": project_obj.Party_B_mobile, # 签约乙方联系方式
"sign_time": project_obj.sign_time.strftime("%Y-%m-%d"), # 签约时间
"project_to_area1": project_obj.project_to_area1, # 落地区域
"sign_style": project_obj.sign_style, # 签约方式
"sign_explain": project_obj.sign_explain, # 其他签约说明
}
if flag == 4:
project_data = {"id": project_obj.id,
"project_name": project_obj.project_name, # 项目名称
"investor_name": project_obj.investor_name, # 投资方名称
"investor_district": project_obj.investor_district, # 投资方所在地
"project_type": project_obj.project_type, # 项目类型
"investment_volume": project_obj.investment_volume, # 总投资额(万元)
"project_num": project_obj.project_num, # 项目编号
"investment_volume1": project_obj.investment_volume1, # 拟引资额(万元)
"project_schedule": project_obj.project_schedule, # 项目进展
"development_area": project_obj.development_area, # 开发区
"garden": project_obj.garden, # 园区
"project_address": project_obj.project_address, # 项目详细地址
"project_problem": project_obj.project_problem, # 项目当前存在的问题
"project_stalker": project_obj.project_stalker, # 项目跟踪人
"joint_person": project_obj.joint_person, # 对接人
"joint_person_unity": project_obj.joint_person_unity, # 对接人单位及职务
"joint_person_mobile": project_obj.joint_person_mobile, # 对接人联系方式
"project_people": project_obj.project_people, # 项目方联系人
"project_people_unity": project_obj.project_people_unity, # 项目方单位或职务
"project_people_mobile": project_obj.project_people_mobile, # 项目方联系方式
"attract_name": project_obj.attract_name, # 引资方名称
"progress_condition": project_obj.progress_condition, # 项目推进情况
"sign_time": project_obj.sign_time, # 签约时间
"investment": project_obj.investment.strftime("%Y-%m-%d"), # 到位资金
"project_to_area1": project_obj.project_to_area1, # 落地区域
"start_time": project_obj.start_time.strftime("%Y-%m-%d"), # 开工时间
"remark": project_obj.remark, # 备注
}
# 项目进展
progress_obj_list = project_obj.progress_conditions
progress_data = []
if progress_obj_list:
progress_data = [{
"id": progress_obj.id,
"time": progress_obj.add_time,
"info": progress_obj.info
} for progress_obj in progress_obj_list if progress_obj.flag == flag]
progress_data = sorted(progress_data, key=lambda x: x['time'], reverse=True)
file_obj_list = project_obj.project_files
file_data = []
three_data = []
if flag == 3:
# 文件
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 if file_obj.file_type == 1 and file_obj.flag == flag]
# 第三方联系人
three_list = project_obj.sign_threes
three_data = [{
"name": three_obj.name,
"people": three_obj.people,
"mobile": three_obj.mobile,
} for three_obj in three_list]
# 图片
img_data = []
if file_obj_list:
img_data = [{
"id": img_obj.id,
"file_url": img_obj.file_url,
"file_name": img_obj.file_name,
"project_id": img_obj.project_id,
"file_type": img_obj.file_type
} for img_obj in file_obj_list if img_obj.file_type == 2 and img_obj.flag == flag]
return jsonify(code=RET.OK, data={"project_data": project_data,
"three_data": three_data,
"file_data": file_data,
"img_data": img_data,
"progress_data": progress_data,
"msg": "数据获取成功!"})
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="操作失败!数据库查询错误")
# 编辑对接库、签约库、开工库
@api_manage.route("/EditProject", methods=["POST"])
def edit_project():
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
user_id = user_obj.id
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
# 三库共有的
project_id = request.form['project_id']
# flag = request.form['flag'] # 2为对接库,3为签约库,4为开工库
three_list = request.files.getlist('three_list')
img_list = request.files.getlist('img_list')
file_list = request.files.getlist('file_list')
file_del_list = request.form.getlist('file_del_list')
img_del_list = request.form.getlist('img_del_list')
project_name = request.form["project_name"]
investor_name = request.form["investor_name"]
investor_district = request.form["investor_district"]
project_type = request.form["project_type"]
investment_volume = request.form["investment_volume"]
investment_volume1 = request.form["investment_volume1"]
project_schedule = request.form["project_schedule"]
stop_reason = request.form["stop_reason"]
remark = request.form["remark"]
development_area = request.form["development_area"]
garden = request.form["garden"]
project_address = request.form["project_address"]
project_problem = request.form["project_problem"]
project_stalker = request.form["project_stalker"]
joint_person = request.form["joint_person"]
joint_person_unity = request.form["joint_person_unity"]
joint_person_mobile = request.form["joint_person_mobile"]
project_people = request.form["project_people"]
project_people_unity = request.form["project_people_unity"]
project_people_mobile = request.form["project_people_mobile"]
# 个别的
project_to_area = request.form["project_to_area"]
attract_name = request.form["attract_name"]
investment = request.form["investment"]
project_to_area1 = request.form["project_to_area1"]
sign_time = request.form["sign_time"]
start_time = request.form["start_time"]
Party_A_name = request.form["Party_A_name"]
Party_A_people = request.form["Party_A_people"]
Party_A_mobile = request.form["Party_A_mobile"]
Party_B_name = request.form["Party_B_name"]
Party_B_people = request.form["Party_B_people"]
Party_B_mobile = request.form["Party_B_mobile"]
sign_style = request.form["sign_style"]
sign_explain = request.form["sign_explain"]
try:
project_obj = SikuProject.query.get(project_id)
flag = project_obj.flag
project_obj.project_name = project_name
project_obj.investor_name = investor_name
project_obj.investor_district = investor_district
project_obj.project_type = project_type
project_obj.investment_volume = investment_volume
project_obj.investment_volume1 = investment_volume1
project_obj.project_schedule = project_schedule
project_obj.stop_reason = stop_reason
project_obj.remark = remark
project_obj.development_area = development_area
project_obj.garden = garden
project_obj.project_address = project_address
project_obj.project_problem = project_problem
project_obj.project_stalker = project_stalker
project_obj.joint_person = joint_person
project_obj.joint_person_unity = joint_person_unity
project_obj.joint_person_mobile = joint_person_mobile
project_obj.project_people = project_people
project_obj.project_people_unity = project_people_unity
project_obj.project_people_mobile = project_people_mobile
if project_to_area and flag == 2:
project_obj.project_to_area = project_to_area
if attract_name and flag in [3, 4]:
project_obj.attract_name = attract_name
if investment and flag == 4:
project_obj.investment = investment
if project_to_area1 and flag in [3, 4]:
project_obj.project_to_area1 = project_to_area1
if sign_time and flag in [3, 4]:
project_obj.sign_time = sign_time
if start_time and flag in [3, 4]:
project_obj.start_time = start_time
if Party_A_name and flag == 4:
project_obj.Party_A_name = Party_A_name
if Party_A_people and flag == 4:
project_obj.Party_A_people = Party_A_people
if Party_A_mobile and flag == 4:
project_obj.Party_A_mobile = Party_A_mobile
if Party_B_name and flag == 4:
project_obj.Party_B_name = Party_B_name
if Party_B_people and flag == 4:
project_obj.Party_B_people = Party_B_people
if Party_B_mobile and flag == 4:
project_obj.Party_B_mobile = Party_B_mobile
if sign_style and flag == 4:
project_obj.sign_style = sign_style
if sign_explain and flag == 4:
project_obj.sign_explain = sign_explain
try:
if three_list:
for three_obj in three_list:
three_obj = SignThree(
name=three_obj.name,
people=three_obj.people,
mobile=three_obj.mobile,
project_id=project_id
)
db.session.add(three_obj)
db.session.commit()
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="第三方保存出错,编辑失败!")
# 删除文件和图片
if file_del_list or img_del_list:
result = file_delete(file_del_list, img_del_list, project_id, flag)
if result == 'error':
return jsonify(code=RET.DBERR, msg="附件删除异常,编辑失败!")
edit_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# flag1 = 0
# flag2 = 0
try:
# 上传文件
if file_list:
for file_obj in file_list:
file_name = file_obj.filename
file_url = upload_daily_picture(1, file_name, file_obj)
# 存入数据库
file_obj = ProjectFile(project_id=project_id,
flag=flag,
file_type=1,
file_name=file_name,
file_url=file_url,
upload_time=edit_time,
upload_people=user_name,
upload_people_id=user_id
)
db.session.add(file_obj)
db.session.commit()
flag1 = 1
# 上传图片
if img_list:
for img_obj in img_list:
img_name = img_obj.filename
img_url = upload_daily_picture(2, img_name, img_obj)
# 存入数据库
img_obj = ProjectFile(project_id=project_id,
flag=flag,
file_type=2,
file_name=img_name,
file_url=img_url,
upload_time=edit_time,
upload_people=user_name,
upload_people_id=user_id
)
db.session.add(img_obj)
db.session.commit()
flag2 = 1
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="文件/图片上传出错,编辑失败!")
# msg1 = ''
# msg2 = ''
# if flag1 == 1:
# msg1 = '文件上传成功。'
# if flag2 == 1:
# msg2 = '图片上传成功。'
# return jsonify(code=RET.OK, msg="编辑成功!" + msg1 + msg2)
db.session.commit()
# 记录项目动态
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '编辑了项目详情信息。', time1)
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("/BatchExportProject1", methods=["POST"])
def batch_export_project1():
req_dic = request.get_json()
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
select_id_list = req_dic["select_id_list"]
path = './apps/statics/project_file/'
pro_path = 'D:/中研项目代码/flask_jincheng/apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:5051/statics/project_file/' # 项目路径
if not select_id_list:
return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
target_data_list = []
for select_id in select_id_list:
try:
project_obj = SikuProject.query.filter_by(id=select_id).first()
# 提取数据,写入xslx表格
data_list = []
project_num = project_obj.project_num # 项目名称
data_list.append(project_num)
project_name = project_obj.project_name # 项目名称
data_list.append(project_name)
investor_name = project_obj.investor_name # 投资方名称
data_list.append(investor_name)
investor_district = project_obj.investor_district # 投资方所在地
data_list.append(investor_district)
project_type = project_obj.project_type # 项目类型
data_list.append(project_type)
investment_volume = project_obj.investment_volume # 总投资额(万元)
data_list.append(investment_volume)
investment_volume1 = project_obj.investment_volume1 # ni投资额(万元)
data_list.append(investment_volume1)
project_info = project_obj.project_info # 项目基本情况
data_list.append(project_info)
project_info1 = project_obj.project_info1 # 项目方基本情况
data_list.append(project_info1)
thread_people = project_obj.thread_people # 线索提供人
data_list.append(thread_people)
thread_people_unity = project_obj.thread_people_unity # 线索提供人单位
data_list.append(thread_people_unity)
thread_people_mobile = project_obj.thread_people_mobile # 线索提供人联系方式
data_list.append(thread_people_mobile)
remark = project_obj.remark # 备注
data_list.append(remark)
target_data_list.append(data_list)
# 记录项目动态
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误!")
try:
sheet_name_titles = {
"sheet1": ["项目编号(自动生成)", "项目名称", "投资方名称", "投资方所在地", "项目类型",
"总投资额(万元)", "拟引资额(万元)", "项目基本情况", "项目方基本情况", "线索提供人",
"单位及职务", "联系方式", "备注",]}
head_list = ''
sheet = ''
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)
# 记录项目动态
for project_id in select_id_list:
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '导出了项目文件。', time1)
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("/BatchExportProject2", methods=["POST"])
def batch_export_project2():
req_dic = request.get_json()
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
select_id_list = req_dic["select_id_list"]
path = './apps/statics/project_file/'
pro_path = 'D:/中研项目代码/flask_jincheng/apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:5051/statics/project_file/' # 项目路径
if not select_id_list:
return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
target_data_list = []
for select_id in select_id_list:
try:
project_obj = SikuProject.query.filter_by(id=select_id).first()
# 提取数据,写入xslx表格
data_list = []
project_num = project_obj.project_num # 项目名称
data_list.append(project_num)
project_name = project_obj.project_name # 项目名称
data_list.append(project_name)
investor_name = project_obj.investor_name # 投资方名称
data_list.append(investor_name)
investor_district = project_obj.investor_district # 投资方所在地
data_list.append(investor_district)
project_type = project_obj.project_type # 项目类型
data_list.append(project_type)
investment_volume = project_obj.investment_volume # 总投资额(万元)
data_list.append(investment_volume)
investment_volume1 = project_obj.investment_volume1 # ni投资额(万元)
data_list.append(investment_volume1)
project_to_area1 = project_obj.project_to_area1 # ni投资额(万元)
data_list.append(project_to_area1)
development_area = project_obj.development_area # ni投资额(万元)
data_list.append(development_area)
project_address = project_obj.project_address # ni投资额(万元)
data_list.append(project_address)
joint_condition = project_obj.joint_condition # ni投资额(万元)
data_list.append(joint_condition)
project_problem = project_obj.project_problem # ni投资额(万元)
data_list.append(project_problem)
project_stalker = project_obj.project_stalker # ni投资额(万元)
data_list.append(project_stalker)
joint_person = project_obj.joint_person # ni投资额(万元)
data_list.append(joint_person)
joint_person_unity = project_obj.joint_person_unity # ni投资额(万元)
data_list.append(joint_person_unity)
joint_person_mobile = project_obj.joint_person_mobile # ni投资额(万元)
data_list.append(joint_person_mobile)
project_people = project_obj.project_people # ni投资额(万元)
data_list.append(project_people)
project_people_unity = project_obj.project_people_unity # ni投资额(万元)
data_list.append(project_people_unity)
project_people_mobile = project_obj.project_people_mobile # ni投资额(万元)
data_list.append(project_people_mobile)
remark = project_obj.remark # 备注
data_list.append(remark)
target_data_list.append(data_list)
# 记录项目动态
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误!")
try:
sheet_name_titles = {
"sheet1": ["项目编号(自动生成)", "项目名称", "投资方名称", "投资方所在地", "项目类型",
"总投资额(万元)", "拟投资额(万元)", "拟落地区域", "开发区", "项目详细地址", "项目对接情况",
"项目当前存在问题", "项目跟踪人",
"对接人", "对接人单位及职务", "对接人联系方式", "项目方联系人",
"项目方单位及职务","项目方联系方式","备注",]}
head_list = ''
sheet = ''
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)
# 记录项目动态
for project_id in select_id_list:
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '导出了项目文件。', time1)
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("/BatchExportProject3", methods=["POST"])
def batch_export_project3():
req_dic = request.get_json()
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
select_id_list = req_dic["select_id_list"]
path = './apps/statics/project_file/'
pro_path = 'D:/中研项目代码/flask_jincheng/apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:5051/statics/project_file/' # 项目路径
if not select_id_list:
return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
target_data_list = []
for select_id in select_id_list:
try:
project_obj = SikuProject.query.filter_by(id=select_id).first()
# 提取数据,写入xslx表格
data_list = []
project_num = project_obj.project_num # 项目名称
data_list.append(project_num)
project_name = project_obj.project_name # 项目名称
data_list.append(project_name)
attract_name = project_obj.attract_name # 投资方名称
data_list.append(attract_name)
investor_name = project_obj.investor_name # 投资方名称
data_list.append(investor_name)
investor_district = project_obj.investor_district # 投资方所在地
data_list.append(investor_district)
project_type = project_obj.project_type # 项目类型
data_list.append(project_type)
investment_volume = project_obj.investment_volume # 总投资额(万元)
data_list.append(investment_volume)
investment_volume1 = project_obj.investment_volume1 # ni投资额(万元)
data_list.append(investment_volume1)
project_to_area = project_obj.project_to_area # ni投资额(万元)
data_list.append(project_to_area)
development_area = project_obj.development_area # ni投资额(万元)
data_list.append(development_area)
project_address = project_obj.project_address # ni投资额(万元)
data_list.append(project_address)
progress_condition = project_obj.progress_condition # ni投资额(万元)
data_list.append(progress_condition)
Party_A_name = project_obj.Party_A_name # ni投资额(万元)
data_list.append(Party_A_name)
Party_A_people = project_obj.Party_A_people # ni投资额(万元)
data_list.append(Party_A_people)
Party_A_mobile = project_obj.Party_A_mobile # ni投资额(万元)
data_list.append(Party_A_mobile)
Party_B_name = project_obj.Party_B_name # ni投资额(万元)
data_list.append(Party_B_name)
Party_B_people = project_obj.Party_B_people # ni投资额(万元)
data_list.append(Party_B_people)
Party_B_mobile = project_obj.Party_B_mobile # ni投资额(万元)
data_list.append(Party_B_mobile)
sign_time = project_obj.sign_time # ni投资额(万元)
data_list.append(sign_time)
project_stalker = project_obj.project_stalker # ni投资额(万元)
data_list.append(project_stalker)
joint_person = project_obj.joint_person # ni投资额(万元)
data_list.append(joint_person)
joint_person_unity = project_obj.joint_person_unity # ni投资额(万元)
data_list.append(joint_person_unity)
joint_person_mobile = project_obj.joint_person_mobile # ni投资额(万元)
data_list.append(joint_person_mobile)
project_people = project_obj.project_people # ni投资额(万元)
data_list.append(project_people)
project_people_unity = project_obj.project_people_unity # ni投资额(万元)
data_list.append(project_people_unity)
project_people_mobile = project_obj.project_people_mobile # ni投资额(万元)
data_list.append(project_people_mobile)
remark = project_obj.remark # 备注
data_list.append(remark)
target_data_list.append(data_list)
# 记录项目动态
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误!")
try:
sheet_name_titles = {
"sheet1": ["项目编号(自动生成)", "项目名称", "引资方名称", "投资方名称", "投资方所在地",
"项目类型", "总投资额(万元)", "拟投资额(万元)", "落地区域", "开发区", "项目详细地址",
"项目推进情况", "签约甲方名称", "签约甲方联系人", "签约甲方联系方式", "签约乙方名称",
"签约乙方联系人", "签约乙方联系方式", "签约时间", "项目跟踪人", "对接人", "对接人单位及职务",
"对接人联系方式", "项目方联系人", "项目方单位及职务", "项目方联系方式", "备注"]}
head_list = ''
sheet = ''
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)
# 记录项目动态
for project_id in select_id_list:
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '导出了项目文件。', time1)
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("/BatchExportProject4", methods=["POST"])
def batch_export_project4():
req_dic = request.get_json()
token = request.headers['token']
try:
user_obj = verify_token(token)
user_name = user_obj.real_name
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="用户信息校验失败,请重新登陆后尝试!")
select_id_list = req_dic["select_id_list"]
path = './apps/statics/project_file/'
pro_path = 'D:/中研项目代码/flask_jincheng/apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:5051/statics/project_file/' # 项目路径
if not select_id_list:
return jsonify(code=RET.PARAMERR, msg="参数不能为空!")
target_data_list = []
for select_id in select_id_list:
try:
project_obj = SikuProject.query.filter_by(id=select_id).first()
# 提取数据,写入xslx表格
data_list = []
project_num = project_obj.project_num # 项目名称
data_list.append(project_num)
project_name = project_obj.project_name # 项目名称
data_list.append(project_name)
attract_name = project_obj.attract_name # 投资方名称
data_list.append(attract_name)
investor_name = project_obj.investor_name # 投资方名称
data_list.append(investor_name)
investor_district = project_obj.investor_district # 投资方所在地
data_list.append(investor_district)
project_type = project_obj.project_type # 项目类型
data_list.append(project_type)
investment_volume = project_obj.investment_volume # 总投资额(万元)
data_list.append(investment_volume)
investment_volume1 = project_obj.investment_volume1 # ni投资额(万元)
data_list.append(investment_volume1)
investment = project_obj.investment # ni投资额(万元)
data_list.append(investment)
project_to_area = project_obj.project_to_area # ni投资额(万元)
data_list.append(project_to_area)
development_area = project_obj.development_area # ni投资额(万元)
data_list.append(development_area)
project_address = project_obj.project_address # ni投资额(万元)
data_list.append(project_address)
progress_condition = project_obj.progress_condition # ni投资额(万元)
data_list.append(progress_condition)
project_problem = project_obj.project_problem # ni投资额(万元)
data_list.append(project_problem)
sign_time = project_obj.sign_time # ni投资额(万元)
data_list.append(sign_time)
start_time = project_obj.start_time # ni投资额(万元)
data_list.append(start_time)
project_stalker = project_obj.project_stalker # ni投资额(万元)
data_list.append(project_stalker)
joint_person = project_obj.joint_person # ni投资额(万元)
data_list.append(joint_person)
joint_person_unity = project_obj.joint_person_unity # ni投资额(万元)
data_list.append(joint_person_unity)
joint_person_mobile = project_obj.joint_person_mobile # ni投资额(万元)
data_list.append(joint_person_mobile)
project_people = project_obj.project_people # ni投资额(万元)
data_list.append(project_people)
project_people_unity = project_obj.project_people_unity # ni投资额(万元)
data_list.append(project_people_unity)
project_people_mobile = project_obj.project_people_mobile # ni投资额(万元)
data_list.append(project_people_mobile)
remark = project_obj.remark # 备注
data_list.append(remark)
target_data_list.append(data_list)
# 记录项目动态
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误!")
try:
sheet_name_titles = {
"sheet1": ["项目编号(自动生成)", "项目名称", "引资方名称", "投资方名称", "投资方所在地",
"项目类型", "总投资额(万元)", "拟投资额(万元)", "到位资金(万元)", "落地区域", "开发区",
"项目详细地址", "项目推进情况", "项目当前存在问题", "签约时间", "开工时间",
"项目跟踪人", "对接人", "对接人单位及职务", "对接人联系方式", "项目方联系人", "项目方单位及职务",
"项目方联系方式", "备注"]}
head_list = ''
sheet = ''
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)
# 记录项目动态
for project_id in select_id_list:
time1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
write_dynamic(user_name, project_id, '导出了项目文件。', time1)
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="批量导出操作失败!")
......
......@@ -1034,7 +1034,8 @@ class GovDepartment(db.Model):
"""招商资源管理"""
class SikuProject(db.Model): # 四库管理-项目信息表
# 四库管理-项目信息表
class SikuProject(db.Model):
__tablename_ = "siku_project"
__table_args__ = ({'comment': '四库管理-项目信息表'}) # 添加表注释
# 项目标签
......@@ -1072,6 +1073,7 @@ class SikuProject(db.Model): # 四库管理-项目信息表
# 对接库
project_to_area = db.Column(db.String(20), comment='拟落地区域')
development_area = db.Column(db.String(20), comment='开发区')
garden = db.Column(db.String(20), comment='园区')
project_address = db.Column(db.String(20), comment='项目详细地址')
joint_condition = db.Column(db.String(20), comment='项目对接情况')
project_problem = db.Column(db.String(20), comment='项目当前存在的问题')
......@@ -1094,6 +1096,8 @@ class SikuProject(db.Model): # 四库管理-项目信息表
Party_B_mobile = db.Column(db.String(20), comment='签约乙方联系方式')
sign_time = db.Column(db.DateTime, comment='签约时间')
sign_year = db.Column(db.Integer, comment='签约年份')
sign_style = db.Column(db.String(20), comment='签约方式')
sign_explain = db.Column(db.String(255), comment='其他签约说明')
# 开工库
investment = db.Column(db.String(20), comment='到位资金')
......@@ -1102,7 +1106,54 @@ class SikuProject(db.Model): # 四库管理-项目信息表
start_year = db.Column(db.Integer, comment='开工年份')
# 四库管理对接库-项目进展(项目对接情况/项目推进情况)
class ProgressCondition(db.Model):
__tablename_ = "progress_condition"
__table_args__ = ({'comment': '四库管理对接库-项目进展(项目对接情况/项目推进情况)'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
flag = db.Column(db.Integer, comment='2为对接库,3为签约库,4为开工库')
add_time = db.Column(db.DateTime, comment='添加时间')
info = db.Column(db.String(20), comment='项目对接情况')
project_id = db.Column(db.Integer, db.ForeignKey("siku_project.id"), comment='外键id,项目id')
project = db.relationship('SikuProject', backref=db.backref('progress_conditions')) # 项目1-N项目对接情况
# 四库管理对接库-相关印证资料图片
class ProjectFile(db.Model):
__tablename_ = "project_file"
__table_args__ = ({'comment': '四库管理对接库-相关印证资料图片'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
flag = db.Column(db.Integer, comment='2为对接库,3为签约库,4为开工库')
file_type = db.Column(db.Integer, comment='1文件,2图片')
file_url = db.Column(db.String(300), comment='相关印证资料图片url')
file_name = db.Column(db.String(20), comment='相关印证资料图片名称')
upload_time = db.Column(db.String(20), comment='上传时间')
upload_people = db.Column(db.String(20), comment='上传人')
upload_people_id = db.Column(db.Integer, comment='上传人id')
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项目对接情况
# 签约库-签约的第三方
class SignThree(db.Model):
__tablename_ = "sign_three"
__table_args__ = ({'comment': '签约库-签约的第三方'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
# flag = db.Column(db.Integer, comment='2为对接库,3为签约库,4为开工库')
name = db.Column(db.String(20), comment='第三方名称')
people = db.Column(db.String(20), comment='第三方联系人')
mobile = db.Column(db.String(20), comment='第三方联系方式')
project_id = db.Column(db.Integer, db.ForeignKey("siku_project.id"), comment='外键id,项目id')
project = db.relationship('SikuProject', backref=db.backref('sign_threes')) # 项目1-N项目对接情况
# 四库管理-项目动态数据表
class ProjectDynamicLog(db.Model):
__tablename_ = "project_dynamic_log"
__table_args__ = ({'comment': '四库管理-项目动态数据表'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
project_id = db.Column(db.Integer, comment='项目id')
operation_people = db.Column(db.String(30), comment='操作人')
item = db.Column(db.String(255), comment='动态')
time = db.Column(db.String(30), comment='时间')
\ No newline at end of file
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