153 lines
6.8 KiB
Python
153 lines
6.8 KiB
Python
import os
|
|
import django
|
|
import random
|
|
from datetime import date, timedelta, datetime
|
|
from django.utils import timezone
|
|
|
|
# 设置 Django 环境
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'XH_Digital_Management.settings')
|
|
django.setup()
|
|
|
|
from application.exec_tbl.models import FinancialData, MonthlyFinancialData, ReceivablesData, ReceivablesDetail, \
|
|
EmployeeStatus, EmployeePerformance, EmployeeAttendance, ProjectLedger
|
|
|
|
|
|
def generate_test_data():
|
|
# 生成 FinancialData 测试数据
|
|
for year in range(2018, 2024):
|
|
data = FinancialData.objects.create(
|
|
year=year,
|
|
annual_revenue=random.uniform(1000000, 5000000),
|
|
annual_new_revenue=random.uniform(100000, 500000),
|
|
annual_existing_revenue=random.uniform(500000, 4000000),
|
|
annual_operating_costs=random.uniform(500000, 3000000),
|
|
annual_expenses=random.uniform(100000, 500000),
|
|
operating_profit=random.uniform(50000, 1000000),
|
|
unfinished_annual_revenue=random.uniform(50000, 200000),
|
|
daily_income_target_remaining=random.uniform(1000, 5000)
|
|
)
|
|
print(f"Created FinancialData: {data}")
|
|
|
|
# 生成 MonthlyFinancialData 测试数据
|
|
for year in range(2018, 2024):
|
|
for month in range(1, 13):
|
|
year_month = f"{year}-{str(month).zfill(2)}"
|
|
data = MonthlyFinancialData.objects.create(
|
|
year_month=year_month,
|
|
current_month_income=random.uniform(50000, 200000),
|
|
monthly_income_target=random.uniform(100000, 200000),
|
|
monthly_target_completion_rate=random.uniform(0, 100),
|
|
current_month_new_income=random.uniform(10000, 50000),
|
|
monthly_new_income_target=random.uniform(20000, 60000),
|
|
monthly_new_income_completion_rate=random.uniform(0, 100),
|
|
current_month_existing_income=random.uniform(30000, 150000),
|
|
monthly_existing_income_target=random.uniform(50000, 150000),
|
|
monthly_existing_income_completion_rate=random.uniform(0, 100),
|
|
annual_accumulated_income=random.uniform(500000, 3000000),
|
|
accumulated_target_completion_rate=random.uniform(0, 100)
|
|
)
|
|
print(f"Created MonthlyFinancialData: {data}")
|
|
|
|
# 生成 ReceivablesData 测试数据
|
|
for i in range(5):
|
|
data = ReceivablesData.objects.create(
|
|
total_receivables=random.uniform(50000, 200000),
|
|
receivables_0_3_months=random.uniform(10000, 50000),
|
|
receivables_3_6_months=random.uniform(5000, 30000),
|
|
receivables_6_12_months=random.uniform(1000, 20000),
|
|
receivables_1_2_years=random.uniform(500, 15000),
|
|
receivables_2_3_years=random.uniform(100, 10000),
|
|
receivables_3_5_years=random.uniform(50, 5000),
|
|
receivables_over_5_years=random.uniform(10, 1000)
|
|
)
|
|
print(f"Created ReceivablesData: {data}")
|
|
|
|
# 生成 ReceivablesDetail 测试数据
|
|
for i in range(10):
|
|
data = ReceivablesDetail.objects.create(
|
|
project_name=f"项目{i}",
|
|
primary_department=f"一级部门{i}",
|
|
project_manager=f"项目负责人{i}",
|
|
outstanding_amount=random.uniform(1000, 50000)
|
|
)
|
|
print(f"Created ReceivablesDetail: {data}")
|
|
|
|
# 生成 EmployeeStatus 测试数据
|
|
data = EmployeeStatus.objects.create(
|
|
total_employees=random.randint(50, 200),
|
|
new_employees_current_year=random.randint(10, 50),
|
|
regularized_employees=random.randint(5, 30),
|
|
probation_failed=random.randint(0, 10),
|
|
employees_left_current_year=random.randint(5, 30),
|
|
intern_employees=random.randint(1, 10),
|
|
part_time_employees=random.randint(1, 20)
|
|
)
|
|
print(f"Created EmployeeStatus: {data}")
|
|
|
|
# 生成 EmployeePerformance 测试数据
|
|
for year in range(2018, 2024):
|
|
for i in range(10):
|
|
data = EmployeePerformance.objects.create(
|
|
year=year,
|
|
name=f"员工{i}",
|
|
department=f"一级部门{i}",
|
|
current_year_income=random.uniform(50000, 200000),
|
|
income_target=random.uniform(100000, 200000),
|
|
income_target_completion_rate=random.uniform(0, 100),
|
|
commission_paid=random.uniform(5000, 20000),
|
|
accrued_amount=random.uniform(1000, 10000),
|
|
other_bonuses=random.uniform(1000, 10000)
|
|
)
|
|
print(f"Created EmployeePerformance: {data}")
|
|
|
|
# 生成 EmployeeAttendance 测试数据
|
|
for i in range(10):
|
|
data = EmployeeAttendance.objects.create(
|
|
name=f"员工{i}",
|
|
late=random.randint(0, 10),
|
|
early_departure=random.randint(0, 10),
|
|
absenteeism=random.randint(0, 5),
|
|
annual_leave=random.randint(0, 15),
|
|
personal_leave=random.randint(0, 10),
|
|
sick_leave=random.randint(0, 10),
|
|
other_leave=random.randint(0, 5)
|
|
)
|
|
print(f"Created EmployeeAttendance: {data}")
|
|
|
|
# 生成 ProjectLedger 测试数据
|
|
for i in range(10):
|
|
data = ProjectLedger.objects.create(
|
|
project_name=f"项目{i}",
|
|
start_date=date.today() - timedelta(days=random.randint(30, 365)),
|
|
end_date=date.today() + timedelta(days=random.randint(30, 365)),
|
|
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}, 成员{i + 1}, 成员{i + 2}",
|
|
project_status=random.choice(['进行中', '暂停', '待收款', '完成']),
|
|
resource_type=random.choice(['公司', '个人']),
|
|
project_nature=random.choice(['新增', '存量', '新增及存量', '老客户新业务']),
|
|
project_progress=f"进度{i * 10}%",
|
|
contract_date=date.today() - timedelta(days=random.randint(30, 365)),
|
|
contract_amount=random.uniform(100000, 500000),
|
|
contract_rate=random.uniform(0, 10),
|
|
revenue=random.uniform(50000, 200000),
|
|
cost_rate=random.uniform(0, 10),
|
|
cost=random.uniform(30000, 150000),
|
|
net_income=random.uniform(10000, 50000),
|
|
total_amount_including_tax=random.uniform(50000, 200000),
|
|
repayment_amount=random.uniform(10000, 50000),
|
|
receivable_net_income=random.uniform(10000, 50000),
|
|
actual_net_income=random.uniform(10000, 50000),
|
|
outstanding_net_income=random.uniform(10000, 50000),
|
|
notes=f"备注{i}"
|
|
)
|
|
print(f"Created ProjectLedger: {data}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
generate_test_data()
|