XH_Digital_Management/application/pjt_mgnt/tests.py

164 lines
7.0 KiB
Python

import os
import django
import random
from datetime import date, timedelta
# 设置 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()