Commit 012ac2b0 by dong

fix20221121

parent 6d1656bf
import oss2
import requests
import xlrd
import xlwt
from flask import current_app, jsonify, request
from sqlalchemy import and_
from apps.models import *
from apps.models import ProjectManagement
from apps.utils.response_code import RET
from apps.view_project_management import api_project
from apps.util import verify_identity
"""统计分析"""
# 统计分析
@api_project.route("/StatisticAnalysis", methods=["POST"])
def statistic_analysis():
req_dic = request.get_json()
flag = req_dic['flag']
district = req_dic['district']
data_dic = {}
try:
# 行业分布
if flag == 1:
data_list = []
project_obj_list = ProjectManagement.query.all()
# 获取所有项目中的行业并去重
industry_name_set = set(project_obj.industry for project_obj in project_obj_list)
for industry_name in list(industry_name_set):
industry_count = ProjectManagement.query.filter(ProjectManagement.industry == industry_name).count()
if not industry_count:
industry_count = 0
data_list.append({'industry_name': industry_name,
'industry_count': industry_count})
data_list.sort(key=lambda s: s["industry_count"], reverse=True)
return jsonify(code=RET.OK, data=data_list, msg='数据获取成功!')
# 项目类型统计 1招引项目,2洽谈项目,3签约项目,4开工项目,5投产项目
if flag == 2:
data_list = []
project_type_name = ''
for project_type in [1, 2, 3, 4, 5]:
if project_type == 1:
project_type_name = '已招引'
elif project_type == 2:
project_type_name = '已洽谈'
elif project_type == 3:
project_type_name = '已签约'
elif project_type == 4:
project_type_name = '已开工'
elif project_type == 5:
project_type_name = '已投产'
project_type_count = ProjectManagement.query.filter(
ProjectManagement.project_type == project_type).count()
if not project_type_count:
project_type_count = 0
data_list.append({'project_type_name': project_type_name,
'project_type_count': project_type_count})
return jsonify(code=RET.OK, data=data_list, msg='数据获取成功!')
# 企业投资额度统计
if flag == 3:
# # 投资额度为100万的
# investment_volume_count1 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume == '100').count()
# if investment_volume_count1:
# data_dic.update({"investment_volume_count1": investment_volume_count1})
# else:
# data_dic.update({"investment_volume_count1": 0})
#
# # 投资额度为100万-300万的
# investment_volume_count2 = ProjectManagement.query.filter(and_
# (ProjectManagement.investment_volume > '100',
# ProjectManagement.investment_volume < '300')).count()
# if investment_volume_count2:
# data_dic.update({"investment_volume_count2": investment_volume_count2})
# else:
# data_dic.update({"investment_volume_count2": 0})
#
# # 投资额度为300, 500, 1000, 3000, 5000万的
# investment_volume_count3 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '300').count()
# if investment_volume_count3:
# data_dic.update({"investment_volume_count3": investment_volume_count3})
# else:
# data_dic.update({"investment_volume_count3": 0})
#
# # 投资额度为300万的
# investment_volume_count4 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '500').count()
# if investment_volume_count4:
# data_dic.update({"investment_volume_count4": investment_volume_count4})
# else:
# data_dic.update({"investment_volume_count4": 0})
#
# # 投资额度为1000万的
# investment_volume_count5 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '1000').count()
# if investment_volume_count5:
# data_dic.update({"investment_volume_count5": investment_volume_count5})
# else:
# data_dic.update({"investment_volume_count5": 0})
#
# # 投资额度为3000万的
# investment_volume_count6 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '3000').count()
# if investment_volume_count6:
# data_dic.update({"investment_volume_count6": investment_volume_count6})
# else:
# data_dic.update({"investment_volume_count6": 0})
#
# # 投资额度为5000万的
# investment_volume_count7 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '5000').count()
# if investment_volume_count7:
# data_dic.update({"investment_volume_count7": investment_volume_count7})
# else:
# data_dic.update({"investment_volume_count7": 0})
investment_volume_count1 = ProjectManagement.query.filter(and_(
ProjectManagement.investment_volume <= 0.3,
ProjectManagement.project_type >= 4),
).count() # 投资额度为0-0.3亿的
if investment_volume_count1:
data_dic.update({"investment_volume_count1": investment_volume_count1})
else:
data_dic.update({"investment_volume_count1": 0})
# 投资额度为0.3-1亿的
investment_volume_count2 = ProjectManagement.query.filter(and_
(ProjectManagement.investment_volume > 0.3,
ProjectManagement.investment_volume <= 1,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count2:
data_dic.update({"investment_volume_count2": investment_volume_count2})
else:
data_dic.update({"investment_volume_count2": 0})
# 投资额度为1-3亿的
investment_volume_count3 = ProjectManagement.query.filter(and_
(ProjectManagement.investment_volume > 1,
ProjectManagement.investment_volume <= 3,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count3:
data_dic.update({"investment_volume_count3": investment_volume_count3})
else:
data_dic.update({"investment_volume_count3": 0})
# 投资额度为3-10亿的
investment_volume_count4 = ProjectManagement.query.filter(and_
(ProjectManagement.investment_volume > 3,
ProjectManagement.investment_volume <= 10,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count4:
data_dic.update({"investment_volume_count4": investment_volume_count4})
else:
data_dic.update({"investment_volume_count4": 0})
# 投资额度为10-50亿的
investment_volume_count5 = ProjectManagement.query.filter(and_
(ProjectManagement.investment_volume > 10,
ProjectManagement.investment_volume <= 50,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count5:
data_dic.update({"investment_volume_count5": investment_volume_count5})
else:
data_dic.update({"investment_volume_count5": 0})
# 投资额度为50-100的
investment_volume_count6 = ProjectManagement.query.filter(and_
(ProjectManagement.investment_volume > 50,
ProjectManagement.investment_volume <= 100,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count6:
data_dic.update({"investment_volume_count6": investment_volume_count6})
else:
data_dic.update({"investment_volume_count6": 0})
# 投资额度为100-150亿的
investment_volume_count7 = ProjectManagement.query.filter(and_
(ProjectManagement.investment_volume > 100,
ProjectManagement.investment_volume <= 150,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count7:
data_dic.update({"investment_volume_count7": investment_volume_count7})
else:
data_dic.update({"investment_volume_count7": 0})
# 投资额度为大于150亿的
investment_volume_count8 = ProjectManagement.query.filter(and_(
ProjectManagement.investment_volume > 150,
ProjectManagement.project_type >= 4),
).count()
if investment_volume_count8:
data_dic.update({"investment_volume_count8": investment_volume_count8})
else:
data_dic.update({"investment_volume_count8": 0})
print(data_dic)
return jsonify(code=RET.OK, data=data_dic, msg='数据获取成功!')
# 项目签约率、开工率、投产率
if flag == 4:
data_list = []
total_project_count = ProjectManagement.query.count()
project_type_name = ''
for project_type in [3, 4, 5]:
if project_type == 3:
project_type_name = '签约'
project_type_count_qy = ProjectManagement.query.filter(
ProjectManagement.project_type >= project_type).count()
if not project_type_count_qy:
project_type_rate_qy = 0
project_type_count_qy = 0
else:
project_type_rate_qy = str(round((project_type_count_qy / total_project_count) * 100, 2)) + '%'
elif project_type == 4:
project_type_name = '开工'
project_type_count_kg = ProjectManagement.query.filter(
ProjectManagement.project_type >= project_type).count()
if not project_type_count_kg:
project_type_rate_kg = 0
project_type_count_kg = 0
else:
project_type_rate_kg = str(round((project_type_count_kg / total_project_count) * 100, 2)) + '%'
elif project_type == 5:
project_type_name = '投产'
project_type_count_tc = ProjectManagement.query.filter(
ProjectManagement.project_type >= project_type).count()
if not project_type_count_tc:
project_type_rate_tc = 0
project_type_count_tc = 0
else:
project_type_rate_tc = str(round((project_type_count_tc / total_project_count) * 100, 2)) + '%'
data_dic = {"project_type_rate_qy": project_type_rate_qy,
"project_type_count_qy": project_type_count_qy,
"project_type_rate_kg": project_type_rate_kg,
"project_type_count_kg": project_type_count_kg,
"project_type_rate_tc": project_type_rate_tc,
"project_type_count_tc": project_type_count_tc,
"total_project_count": total_project_count}
return jsonify(code=RET.OK, data=data_dic, msg='数据获取成功!')
# 月投资额
if flag == 5:
# 获取当前年份
year = datetime.now().year
data_list = []
project_obj_list = ProjectManagement.query.filter(ProjectManagement.project_type >= 3).all()
month_set = set([str(project_obj.file_time).split('-')[1] for project_obj in project_obj_list])
for month in list(month_set):
project_list = ProjectManagement.query.filter(
ProjectManagement.file_time.like('%{}-{}%'.format(year, month))).all()
# 获取投资额
data = [float(project.investment_volume) for project in project_list]
data_list.append({'month': month, 'money': round(sum(data), 2)})
return jsonify(code=RET.OK, data=data_list, msg='数据获取成功!')
# 根据所属区域统计个数
if flag == 6:
# 收集项目区域
data_list = []
if not district:
project_obj_list = ProjectManagement.query.all()
district_set = set([project.district.split(';')[0] for project in project_obj_list])
for district in list(district_set):
project_count = ProjectManagement.query.filter(
ProjectManagement.district.like('%{}%'.format(district))).count()
# data_dic.update({'district': district, 'count': project_count})
data_list.append({'district': district, 'count': project_count})
else:
project_obj_list = ProjectManagement.query.filter(
ProjectManagement.district.like('%{}%'.format(district))).all()
# city_set = set([project.district.split(';')[1] for project in project_obj_list])
city_set = set()
for project in project_obj_list:
try:
city = project.district.split(';')[1]
city_set.add(city)
except:
continue
for city in list(city_set):
project_count = ProjectManagement.query.filter(
ProjectManagement.district.like('%{}%'.format(city))).count()
data_list.append({'city': city, 'count': project_count})
return jsonify(code=RET.OK, data=data_list, msg='数据获取成功!')
# return jsonify(code=RET.OK, data=data_dic, msg='数据获取成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据查询错误!')
"""绩效管理"""
# 绩效评分---项目专班下拉框内容
@api_project.route("/ClassDropDownBox", methods=["GET"])
def drop_down_box():
try:
class_obj_list = ProjectClass.query.all()
class_name_list = set(
[class_obj.class_name if class_obj.class_name else '' for class_obj in class_obj_list])
return jsonify(code=RET.OK, data=list(class_name_list), msg='获取成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 绩效评分---编辑项目专班考核分数
@api_project.route("/EditClassScore", methods=["POST"])
def edit_performance_score():
req_dic = request.get_json()
class_name = req_dic['class_name']
class_score1 = req_dic['class_score1']
class_score2 = req_dic['class_score2']
class_score3 = req_dic['class_score3']
class_score4 = req_dic['class_score4']
total_score = 0
score_list = [class_score1, class_score2, class_score3, class_score4]
for i in range(0, len(score_list)):
if float(score_list[i]):
total_score += float(score_list[i])
else:
total_score += 0
try:
class_obj = ProjectClass.query.filter_by(class_name=class_name).first()
time = datetime.now().strftime("%Y-%m-%d %H:%M")
if not class_obj:
return jsonify(code=RET.NODATA, msg='无此专班,请先在项目中创建!')
class_obj.class_score1 = class_score1
class_obj.class_score2 = class_score2
class_obj.class_score3 = class_score3
class_obj.class_score4 = class_score4
class_obj.total_score = total_score
class_obj.time = time
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 绩效评分---编辑区县、开发区绩效评分
@api_project.route("/EditDistrictScore", methods=["POST"])
def edit_district_score():
req_dic = request.get_json()
district_name = req_dic['district_name']
district_score1 = req_dic['district_score1']
district_score2 = req_dic['district_score2']
district_score3 = req_dic['district_score3']
district_score4 = req_dic['district_score4']
district_score5 = req_dic['district_score5']
district_score6 = req_dic['district_score6']
district_score7 = req_dic['district_score7']
district_score8 = req_dic['district_score8']
try:
project_obj = ScoreDistrict.query.filter_by(district_name=district_name).first()
time = datetime.now().strftime("%Y-%m-%d %H:%M")
if project_obj:
project_obj.district_name = district_name
project_obj.district_score1 = district_score1
project_obj.district_score2 = district_score2
project_obj.district_score3 = district_score3
project_obj.district_score4 = district_score4
project_obj.district_score5 = district_score5
project_obj.district_score6 = district_score6
project_obj.district_score7 = district_score7
project_obj.district_score8 = district_score8
project_obj.time = time
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
else:
project_obj = ScoreDistrict(district_name=district_name, district_score1=district_score1,
district_score2=district_score2, district_score3=district_score3,
district_score4=district_score4, district_score5=district_score5,
district_score6=district_score6, district_score7=district_score7,
district_score8=district_score8, time=time)
db.session.add(project_obj)
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 绩效评分---编辑市直有关单位考核分数
@api_project.route("/EditUnitScore", methods=["POST"])
def edit_unit_score():
req_dic = request.get_json()
unit_name = req_dic['unit_name']
unit_score1 = req_dic['unit_score1']
unit_score2 = req_dic['unit_score2']
unit_score3 = req_dic['unit_score3']
unit_score4 = req_dic['unit_score4']
unit_score5 = req_dic['unit_score5']
try:
unit_obj = ScoreUnit.query.filter_by(unit_name=unit_name).first()
time = datetime.now().strftime("%Y-%m-%d %H:%M")
if unit_obj:
unit_obj.unit_name = unit_name
unit_obj.unit_score1 = unit_score1
unit_obj.unit_score2 = unit_score2
unit_obj.unit_score3 = unit_score3
unit_obj.unit_score4 = unit_score4
unit_obj.unit_score5 = unit_score5
unit_obj.time = time
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
else:
unit_obj = ScoreUnit(unit_name=unit_name, unit_score1=unit_score1, unit_score2=unit_score2,
unit_score3=unit_score3, unit_score4=unit_score4, unit_score5=unit_score5,
time=time)
db.session.add(unit_obj)
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 绩效评分---编辑驻外办事机构考核
@api_project.route("/EditOverseasScore", methods=["POST"])
def edit_overseas_score():
req_dic = request.get_json()
offices_name = req_dic['offices_name']
offices_score1 = req_dic['offices_score1']
offices_score2 = req_dic['offices_score2']
offices_score3 = req_dic['offices_score3']
try:
offices_obj = ScoreOverseasOffices.query.filter_by(offices_name=offices_name).first()
time = datetime.now().strftime("%Y-%m-%d %H:%M")
if offices_obj:
offices_obj.offices_name = offices_name
offices_obj.offices_score1 = offices_score1
offices_obj.offices_score2 = offices_score2
offices_obj.offices_score3 = offices_score3
offices_obj.time = time
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
else:
offices_obj = ScoreOverseasOffices(offices_name=offices_name, offices_score1=offices_score1,
offices_score2=offices_score2, offices_score3=offices_score3,
time=time)
db.session.add(offices_obj)
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 绩效评分---编辑服务保障部门考核绩效评分数据
@api_project.route("/EditServiceDepartmentScore", methods=["POST"])
def edit_service_department_score():
req_dic = request.get_json()
department_name = req_dic['department_name']
department_score1 = req_dic['department_score1']
department_score2 = req_dic['department_score2']
department_score3 = req_dic['department_score3']
department_score4 = req_dic['department_score4']
try:
department_obj = ScoreServiceDepartment.query.filter_by(department_name=department_name).first()
time = datetime.now().strftime("%Y-%m-%d %H:%M")
if department_obj:
department_obj.department_name = department_name
department_obj.department_score1 = department_score1
department_obj.department_score2 = department_score2
department_obj.department_score3 = department_score3
department_obj.department_score4 = department_score4
department_obj.time = time
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
else:
department_obj = ScoreServiceDepartment(department_name=department_name,
department_score1=department_score1,
department_score2=department_score2,
department_score3=department_score3,
department_score4=department_score4,
time=time)
db.session.add(department_obj)
db.session.commit()
return jsonify(code=RET.OK, msg='提交成功!')
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 绩效评分---获取输入框数据
@api_project.route("/GetInputData", methods=["POST"])
def get_input_data():
req_dic = request.get_json()
flag = req_dic['flag']
name = req_dic['name']
data = ''
try:
# 获取专班信息
if flag == 1:
project_obj = ProjectClass.query.filter_by(class_name=name).first()
if not project_obj:
return jsonify(code=RET.NODATA, msg='无此专班信息!请核实。')
data = {
"class_name": name,
"class_score1": project_obj.class_score1,
"class_score2": project_obj.class_score2,
"class_score3": project_obj.class_score3,
"class_score4": project_obj.class_score4,
"time": project_obj.time
}
# 获取对县(市、区)、开发区考核信息
elif flag == 2:
district_obj = ScoreDistrict.query.filter_by(district_name=name).first()
if not district_obj:
return jsonify(code=RET.NODATA, msg='无此县区信息!请核实。')
data = {
"district_name": name,
"district_score1": district_obj.district_score1,
"district_score2": district_obj.district_score2,
"district_score3": district_obj.district_score3,
"district_score4": district_obj.district_score4,
"district_score5": district_obj.district_score5,
"district_score6": district_obj.district_score6,
"district_score7": district_obj.district_score7,
"district_score8": district_obj.district_score8,
"time": district_obj.time,
}
# 获取市直有关单位和群团组织考核信息 ScoreUnit
elif flag == 3:
unit_obj = ScoreUnit.query.filter_by(unit_name=name).first()
if not unit_obj:
return jsonify(code=RET.NODATA, msg='无此市值单位信息!请核实。')
data = {
"unit_name": name,
"unit_score1": unit_obj.unit_score1,
"unit_score2": unit_obj.unit_score2,
"unit_score3": unit_obj.unit_score3,
"unit_score4": unit_obj.unit_score4,
"unit_score5": unit_obj.unit_score5,
"time": unit_obj.time,
}
# 获取驻外办事机构信息
elif flag == 4:
offices_obj = ScoreOverseasOffices.query.filter_by(offices_name=name).first()
if not offices_obj:
return jsonify(code=RET.NODATA, msg='无此市值单位信息!请核实。')
data = {
"offices_name": name,
"offices_score1": offices_obj.offices_score1,
"offices_score2": offices_obj.offices_score2,
"offices_score3": offices_obj.offices_score3,
"time": offices_obj.time,
}
# 获取服务保障等任务的职能部门
elif flag == 5:
department_obj = ScoreServiceDepartment.query.filter_by(department_name=name).first()
if not department_obj:
return jsonify(code=RET.NODATA, msg='无此市值单位信息!请核实。')
data = {
"department_name": name,
"department_score1": department_obj.department_score1,
"department_score2": department_obj.department_score2,
"department_score3": department_obj.department_score3,
"department_score4": department_obj.department_score4,
"time": department_obj.time,
}
return jsonify(code=RET.OK, data=data, msg='数据获取成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据查询错误!')
"""绩效排名"""
# 绩效排名
@api_project.route("/ScoreRank", methods=["POST"])
def score_rank():
req_dic = request.get_json()
flag = req_dic['flag'] # 1项目专班,2区县,3市直部门,4驻外办,5服务保障部门
score_list = ''
try:
if flag == 1:
score_list = []
class_obj_list = ProjectClass.query.all()
if not class_obj_list:
return jsonify(code=RET.NODATA, msg='暂无数据!')
for class_obj in class_obj_list:
if not class_obj.class_name:
continue
score_dic = {
'class_name': class_obj.class_name,
'class_score1': class_obj.class_score1,
'class_score2': class_obj.class_score2,
'class_score3': class_obj.class_score3,
'class_score4': class_obj.class_score4,
'total_score': class_obj.total_score if class_obj.total_score else 0
}
score_list.append(score_dic)
score_list.sort(key=lambda s: s["total_score"], reverse=True)
if flag == 2:
district_obj_list = ScoreDistrict.query.all()
if not district_obj_list:
return jsonify(code=RET.NODATA, msg='暂无数据!')
score_list = [{
'district_name': district_obj.district_name,
'district_score1': district_obj.district_score1,
'district_score2': district_obj.district_score2,
'district_score3': district_obj.district_score3,
'district_score4': district_obj.district_score4,
'district_score5': district_obj.district_score5,
'district_score6': district_obj.district_score6,
'district_score7': district_obj.district_score7,
'district_score8': district_obj.district_score8,
"total_district_score": district_obj.district_score1 + district_obj.district_score2 +
district_obj.district_score3 + district_obj.district_score4 +
district_obj.district_score5 + district_obj.district_score6 +
district_obj.district_score7 + district_obj.district_score8}
for district_obj in district_obj_list]
print(score_list)
score_list.sort(key=lambda s: s["total_district_score"], reverse=True)
# 3市直部门
if flag == 3:
unit_obj_list = ScoreUnit.query.all()
if not unit_obj_list:
return jsonify(code=RET.NODATA, msg='暂无数据!')
score_list = [{
'unit_name': unit_obj.unit_name,
'unit_score1': unit_obj.unit_score1,
'unit_score2': unit_obj.unit_score2,
'unit_score3': unit_obj.unit_score3,
'unit_score4': unit_obj.unit_score4,
'unit_score5': unit_obj.unit_score5,
"total_unit_score": unit_obj.unit_score1 + unit_obj.unit_score2 +
unit_obj.unit_score3 + unit_obj.unit_score4 +
unit_obj.unit_score5}
for unit_obj in unit_obj_list]
score_list.sort(key=lambda s: s["total_unit_score"], reverse=True)
# 4驻外办
if flag == 4:
offices_obj_list = ScoreOverseasOffices.query.all()
if not offices_obj_list:
return jsonify(code=RET.NODATA, msg='暂无数据!')
score_list = [{
'offices_name': offices_obj.offices_name,
'offices_score1': offices_obj.offices_score1,
'offices_score2': offices_obj.offices_score2,
'offices_score3': offices_obj.offices_score3,
"total_offices_score": offices_obj.offices_score1 + offices_obj.offices_score2 +
offices_obj.offices_score3}
for offices_obj in offices_obj_list]
score_list.sort(key=lambda s: s["total_offices_score"], reverse=True)
# 5服务保障部门
if flag == 5:
department_obj_list = ScoreServiceDepartment.query.all()
if not department_obj_list:
return jsonify(code=RET.NODATA, msg='暂无数据!')
score_list = [{
'department_name': department_obj.department_name,
'department_score1': department_obj.department_score1,
'department_score2': department_obj.department_score2,
'department_score3': department_obj.department_score3,
'department_score4': department_obj.department_score4,
"total_department_score": department_obj.department_score1 + department_obj.department_score2 +
department_obj.department_score3 + department_obj.department_score4}
for department_obj in department_obj_list]
score_list.sort(key=lambda s: s["total_department_score"], reverse=True)
return jsonify(code=RET.OK, data=score_list, msg='提交成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据查询错误!')
......@@ -1222,7 +1222,7 @@ def check_project_detail():
"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"), # 签约时间
"sign_time": project_obj.sign_time.strftime("%Y-%m-%d") if project_obj.sign_time else '', # 签约时间
"project_to_area1": project_obj.project_to_area1, # 落地区域
"sign_style": project_obj.sign_style, # 签约方式
"sign_explain": project_obj.sign_explain, # 其他签约说明
......@@ -1250,10 +1250,10 @@ def check_project_detail():
"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"), # 到位资金
"sign_time": project_obj.sign_time.strftime("%Y-%m-%d") if project_obj.sign_time else '', # 签约时间
"investment": project_obj.investment, # 到位资金
"project_to_area1": project_obj.project_to_area1, # 落地区域
"start_time": project_obj.start_time.strftime("%Y-%m-%d"), # 开工时间
"start_time": project_obj.start_time.strftime("%Y-%m-%d") if project_obj.start_time else '', # 开工时间
"remark": project_obj.remark, # 备注
}
# 项目进展
......@@ -1955,8 +1955,27 @@ def batch_export_project4():
return jsonify(code=RET.DBERR, msg="批量导出操作失败!")
# 获取项目动态
@api_manage.route("/GetProjectLog", methods=["POST"])
def get_project_log():
req_dic = request.get_json()
project_id = req_dic['project_id']
page = req_dic['page']
per_page = req_dic['per_page']
try:
log_obj_list = ProjectDynamicLog.query.filter(ProjectDynamicLog.project_id == project_id)
log_obj_list = log_obj_list.order_by(ProjectDynamicLog.time.desc()).paginate(page, per_page).items
data = [{
"id": log_obj.id,
"item": log_obj.operation_people + log_obj.item,
"time": log_obj.time,
} for log_obj in log_obj_list]
return jsonify(code=RET.OK, data=data, msg='项目动态信息获取成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="项目动态信息获取失败!")
......
......@@ -1097,7 +1097,7 @@ class SikuProject(db.Model):
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='其他签约说明')
sign_explain = db.Column(db.String(255), comment='签约方式说明')
# 开工库
investment = db.Column(db.String(20), comment='到位资金')
......@@ -1157,3 +1157,61 @@ class ProjectDynamicLog(db.Model):
operation_people = db.Column(db.String(30), comment='操作人')
item = db.Column(db.String(255), comment='动态')
time = db.Column(db.String(30), comment='时间')
"""项目管理"""
# 项目管理-台账信息表
class ProjectManagement(db.Model):
__tablename_ = "project_management"
__table_args__ = ({'comment': '项目化管理-项目信息表'}) # 添加表注释
# 基本信息
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
project_stalker = db.Column(db.String(30), comment='项目跟踪')
project_name = db.Column(db.String(30), comment='项目名称')
district = db.Column(db.String(20), comment='项目所在地')
development_area = db.Column(db.String(20), comment='开发区')
attract_name = db.Column(db.String(30), comment='引资方名称')
investor_name = db.Column(db.String(30), comment='投资方名称')
investor_district = db.Column(db.String(30), comment='投资方所在地')
industry = db.Column(db.String(20), comment='所属行业')
investment_volume = db.Column(db.Float, comment='总投资额(万元)')
construction_content = db.Column(db.String(30), comment='建设内容')
project_address = db.Column(db.String(20), comment='项目选址')
project_progress = db.Column(db.String(30), comment='项目进展')
project_problem = db.Column(db.String(255), comment='难点情况')
project_year = db.Column(db.Integer, comment='项目年份')
upload_unity = db.Column(db.String(20), comment='上传部门')
upload_people = db.Column(db.String(20), comment='上传人')
upload_time = db.Column(db.DateTime, comment='上传时间')
project_num = db.Column(db.String(30), comment='项目编号')
project_source = db.Column(db.String(20), comment='项目来源')
project_unity = db.Column(db.String(20), comment='项目申报单位')
is_development_project = db.Column(db.String(20), comment='是否属于开发区项目')
sign_time = db.Column(db.DateTime, comment='签约时间')
start_time = db.Column(db.DateTime, comment='开工时间')
end_time = db.Column(db.DateTime, comment='竣工时间')
investor_rank = db.Column(db.String(30), comment='投资方排名')
is_transf_project = db.Column(db.String(30), comment='是否转型项目')
country = db.Column(db.String(30), comment='投资方国别')
provence = db.Column(db.String(30), comment='投资方省份')
city = db.Column(db.String(30), comment='投资方市')
job_num = db.Column(db.Integer, comment='带动就业岗位(个)')
new_value = db.Column(db.Float, comment='新增产值(亿元)')
revenue = db.Column(db.Float, comment='贡献税收(亿元)')
use_land = db.Column(db.String(30), comment='项目用地情况(亩)')
new_land = db.Column(db.String(30), comment='其中新增用地(亩)')
construction_nature = db.Column(db.String(30), comment='建设性质(亩)')
is_fixed_investment = db.Column(db.String(30), comment='固定资产投资项目')
investment_year = db.Column(db.String(20), comment='资金到位本年累计(万元)')
investment_history = db.Column(db.String(20), comment='资金到位历史累计(万元)')
cooperation_way = db.Column(db.String(20), comment='合作方式')
set_project_status = db.Column(db.String(20), comment='项目立项状态')
investor_people = db.Column(db.String(30), comment='投资方联系人')
investor_mobile = db.Column(db.String(30), comment='投资方电话')
investor_address = db.Column(db.String(30), comment='投资方联系地址')
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