2024-06-04 16:50:30 +08:00
|
|
|
import os
|
|
|
|
import django
|
|
|
|
import random
|
|
|
|
from datetime import date, timedelta
|
2024-05-15 18:41:23 +08:00
|
|
|
|
2024-06-04 16:50:30 +08:00
|
|
|
# 设置 Django 环境
|
|
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'XH_Digital_Management.settings')
|
|
|
|
django.setup()
|
|
|
|
|
|
|
|
from application.pjt_mgnt.models import (
|
|
|
|
ProjectLedger, ProjectProgress, ProjectProgressSettings, ProjectIssuesLog,
|
|
|
|
ChildProjectLedgerA, ChildProjectLedgerB, ChildProjectLedgerC, ChildProjectLedgerD,
|
|
|
|
EmployeeProjectIncomeSettlement, EmployeeIncome
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def generate_test_data():
|
|
|
|
# 创建项目台账
|
|
|
|
projects = []
|
|
|
|
for i in range(10):
|
|
|
|
project = ProjectLedger.objects.create(
|
|
|
|
project_name=f"项目名称{i}",
|
|
|
|
start_date=date.today() - timedelta(days=random.randint(100, 500)),
|
|
|
|
end_date=date.today() + timedelta(days=random.randint(100, 500)),
|
|
|
|
primary_department=f"一级部门{i}",
|
|
|
|
customer_name=f"客户名称{i}",
|
|
|
|
province=f"省{i}",
|
|
|
|
city=f"市{i}",
|
|
|
|
district=f"区县{i}",
|
|
|
|
project_leader=f"负责人{i}",
|
|
|
|
project_members=f"项目组员{i}",
|
|
|
|
project_status=random.choice(['进行中', '暂停', '待收款', '完成']),
|
|
|
|
resource_type=random.choice(['公司', '个人']),
|
|
|
|
project_nature=random.choice(['新增', '存量', '新增及存量', '老客户新业务']),
|
|
|
|
project_progress=f"项目进度{i}",
|
|
|
|
contract_date=date.today() - timedelta(days=random.randint(100, 500)),
|
|
|
|
contract_amount=random.uniform(100000, 1000000),
|
|
|
|
contract_rate=random.uniform(0.1, 1.0),
|
|
|
|
revenue=random.uniform(100000, 1000000),
|
|
|
|
cost_rate=random.uniform(0.1, 1.0),
|
|
|
|
cost=random.uniform(100000, 1000000),
|
|
|
|
net_income=random.uniform(100000, 1000000),
|
|
|
|
total_amount_including_tax=random.uniform(100000, 1000000),
|
|
|
|
repayment_amount=random.uniform(100000, 1000000),
|
|
|
|
receivable_net_income=random.uniform(100000, 1000000),
|
|
|
|
actual_net_income=random.uniform(100000, 1000000),
|
|
|
|
outstanding_net_income=random.uniform(100000, 1000000),
|
|
|
|
notes=f"备注{i}"
|
|
|
|
)
|
|
|
|
projects.append(project)
|
|
|
|
print(f"Created ProjectLedger: {project}")
|
|
|
|
|
|
|
|
# 创建项目进度表
|
|
|
|
for project in projects:
|
|
|
|
progress = ProjectProgress.objects.create(
|
|
|
|
project_id=project,
|
|
|
|
flow_nodes={'节点1': '开始', '节点2': '进行中', '节点3': '完成'}
|
|
|
|
)
|
|
|
|
print(f"Created ProjectProgress: {progress}")
|
|
|
|
|
|
|
|
# 创建项目进度设置表
|
|
|
|
for i in range(5):
|
|
|
|
progress_setting = ProjectProgressSettings.objects.create(
|
|
|
|
project_type=f"项目类型{i}",
|
|
|
|
flow_nodes_setting="节点1;节点2;节点3"
|
|
|
|
)
|
|
|
|
print(f"Created ProjectProgressSettings: {progress_setting}")
|
|
|
|
|
|
|
|
# 创建项目问题记录表
|
|
|
|
for project in projects:
|
|
|
|
issue_log = ProjectIssuesLog.objects.create(
|
|
|
|
project_id=project,
|
|
|
|
record_date=date.today() - timedelta(days=random.randint(1, 365)),
|
|
|
|
description=f"问题描述{project.project_name}",
|
|
|
|
handler=f"经办人{project.project_name}",
|
|
|
|
reference=f"参考依据{project.project_name}",
|
|
|
|
solution=f"解决方案{project.project_name}",
|
|
|
|
decision_maker=f"决策人{project.project_name}",
|
|
|
|
status=random.choice(['解决', '未解决'])
|
|
|
|
)
|
|
|
|
print(f"Created ProjectIssuesLog: {issue_log}")
|
|
|
|
|
|
|
|
# 创建项目台账续表A
|
|
|
|
for project in projects:
|
|
|
|
child_a = ChildProjectLedgerA.objects.create(
|
|
|
|
project_id=project,
|
|
|
|
project_type=random.choice(['cbc', '债拍', '其他']),
|
|
|
|
resource_party=f"资源方{project.project_name}",
|
|
|
|
cooperation_party=f"合作方{project.project_name}",
|
|
|
|
transaction_amount=random.uniform(100000, 1000000),
|
|
|
|
target_amount=random.uniform(100000, 1000000)
|
|
|
|
)
|
|
|
|
print(f"Created ChildProjectLedgerA: {child_a}")
|
|
|
|
|
|
|
|
# 创建项目台账续表B
|
|
|
|
for project in projects:
|
|
|
|
child_b = ChildProjectLedgerB.objects.create(
|
|
|
|
project_id=project,
|
|
|
|
project_type=random.choice(['承销', '贸易', '其他']),
|
|
|
|
partner=f"合作方{project.project_name}",
|
|
|
|
start_interest_date=date.today() - timedelta(days=random.randint(1, 365)),
|
|
|
|
interest_payment_date=date.today() + timedelta(days=random.randint(1, 365)),
|
|
|
|
number_of_people=random.randint(1, 100),
|
|
|
|
amount=random.uniform(100000, 1000000)
|
|
|
|
)
|
|
|
|
print(f"Created ChildProjectLedgerB: {child_b}")
|
|
|
|
|
|
|
|
# 创建项目台账续表C
|
|
|
|
for project in projects:
|
|
|
|
child_c = ChildProjectLedgerC.objects.create(
|
|
|
|
project_id=project,
|
|
|
|
project_type=random.choice(['咨询', '科技', '新媒体', '其他']),
|
|
|
|
resource_party=f"资源方{project.project_name}",
|
|
|
|
cooperation_party=f"合作方{project.project_name}",
|
|
|
|
service_period=f"{random.randint(1, 12)}个月"
|
|
|
|
)
|
|
|
|
print(f"Created ChildProjectLedgerC: {child_c}")
|
|
|
|
|
|
|
|
# 创建项目台账续表D
|
|
|
|
for project in projects:
|
|
|
|
child_d = ChildProjectLedgerD.objects.create(
|
|
|
|
project_id=project,
|
|
|
|
project_type=random.choice(['非标', '贸易', '其他']),
|
|
|
|
capital_demand_party=f"资金需求方{project.project_name}",
|
|
|
|
capital_provider=f"资金提供方{project.project_name}",
|
|
|
|
financing_method=f"融资方式{project.project_name}",
|
|
|
|
target_amount=random.uniform(100000, 1000000),
|
|
|
|
term=f"{random.randint(1, 12)}个月",
|
|
|
|
nominal_rate=random.uniform(0.1, 10.0),
|
|
|
|
total_cost=random.uniform(0.1, 10.0),
|
|
|
|
trade_type=random.choice(['带量', '取信', '补票']),
|
|
|
|
trade_entity=f"贸易主体{project.project_name}",
|
|
|
|
trade_service_provider=f"贸易服务商{project.project_name}",
|
|
|
|
trade_variety=f"贸易品种{project.project_name}",
|
|
|
|
demand_party=f"需求方{project.project_name}",
|
|
|
|
supply_party=f"供给方{project.project_name}"
|
|
|
|
)
|
|
|
|
print(f"Created ChildProjectLedgerD: {child_d}")
|
|
|
|
|
|
|
|
# 创建项目组员收入结算表
|
|
|
|
settlements = []
|
|
|
|
for project in projects:
|
|
|
|
settlement = EmployeeProjectIncomeSettlement.objects.create(
|
|
|
|
project_name=project,
|
|
|
|
year_month=f"2023-{random.randint(1, 12):02}"
|
|
|
|
)
|
|
|
|
settlements.append(settlement)
|
|
|
|
print(f"Created EmployeeProjectIncomeSettlement: {settlement}")
|
|
|
|
|
|
|
|
# 创建项目组员收入详情表
|
|
|
|
for settlement in settlements:
|
|
|
|
for i in range(random.randint(1, 5)):
|
|
|
|
income = EmployeeIncome.objects.create(
|
|
|
|
employee_settlement=settlement,
|
|
|
|
name=f"员工姓名{settlement.project_name.project_name}_{i}",
|
|
|
|
contribution_rate=random.uniform(0.1, 1.0),
|
|
|
|
sales_income=random.uniform(10000, 100000)
|
|
|
|
)
|
|
|
|
print(f"Created EmployeeIncome: {income}")
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
generate_test_data()
|