WideRating2024/mock.py

154 lines
7.5 KiB
Python

import os
from datetime import datetime
import django
import random
import string
import shortuuid
from faker import Faker
# 设置 DJANGO_SETTINGS_MODULE 环境变量
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "WideRating2024.settings")
# 初始化 Django 配置
django.setup()
from company_data.models import CompanyResearchInfo, SimpleFinancialReport, CompanyCreditData
fake = Faker('zh_CN')
def generate_company_research_info():
company_research_info = CompanyResearchInfo(
company_id=shortuuid.uuid(),
company_name=fake.company(),
legal_entity_name=fake.name(),
shareholder_nature=random.choice(['个人', '私企', '国企', '政府']),
main_business=fake.catch_phrase(),
senior_management_experience=round(random.uniform(1, 20), 2),
has_board=random.choice(['', '']),
board_members_count=random.randint(1, 10),
has_supervisory_board=random.choice(['', '']),
supervisory_members_count=random.randint(1, 10),
annual_support_funds=round(random.uniform(100000, 1000000), 2),
management_staff_count=random.randint(10, 100),
functional_staff_count=random.randint(10, 100),
sales_staff_count=random.randint(10, 100),
technical_service_staff_count=random.randint(10, 100),
bachelors_or_above_count=random.randint(10, 50),
below_bachelors_count=random.randint(10, 50),
year_end_total_employees=random.randint(50, 200),
annual_resignation_count=random.randint(1, 10),
training_participation_count=random.randint(100, 500),
average_weekly_working_days=round(random.uniform(4, 7), 2),
average_daily_working_hours=round(random.uniform(6, 10), 2),
work_related_casualties=random.randint(0, 10),
sales_amount=round(random.uniform(100000, 1000000), 2),
returns_amount=round(random.uniform(10000, 100000), 2),
privacy_breach_incidents=random.choice(['', '']),
total_service_times=random.randint(100, 500),
valid_customer_complaints=random.randint(0, 20),
complaints_resolved=random.randint(0, 20),
complaint_response_time=round(random.uniform(0.5, 24), 2),
rmb_account_bank_name=random.choice(['天朝银行', '天朝商业银行', '天朝建设银行', '天朝农业银行', '天朝邮政储蓄银行']),
rmb_bank_account=''.join(random.choices(string.digits, k=16)),
foreign_currency_bank_name=random.choice(['鹰酱银行', '龟谷银行', '棒子银行', '小日子银行', '骆驼银行']),
foreign_currency_bank_account=''.join(random.choices(string.ascii_uppercase + string.digits, k=18)),
loan_card_number=''.join(random.choices(string.ascii_uppercase + string.digits, k=16)),
operating_site_area=round(random.uniform(100, 1000), 2),
operating_site_location=fake.address(),
operating_site_ownership=random.choice(['自有', '租赁']),
has_quality_management_system=random.choice(['', '']),
has_financial_management_system=random.choice(['', '']),
has_contract_management_system=random.choice(['', '']),
has_hr_management_system=random.choice(['', '']),
business_credit_record=fake.paragraph(),
customs_credit_record=fake.paragraph(),
bank_credit_record=fake.paragraph(),
court_credit_record=fake.paragraph(),
production_safety_information=fake.paragraph(),
social_responsibility_implementation=fake.paragraph(),
)
company_research_info.save()
return company_research_info
def generate_simple_financial_report(company, year):
simple_financial_report = SimpleFinancialReport(
financial_report_id=shortuuid.uuid(),
company=company,
company_name=company.company_name,
report_date=datetime(year, 12, 31),
currency_funds=round(random.uniform(10000, 100000), 2),
accounts_receivable=round(random.uniform(10000, 100000), 2),
other_receivables=round(random.uniform(10000, 100000), 2),
prepayments=round(random.uniform(10000, 100000), 2),
inventory=round(random.uniform(10000, 100000), 2),
total_current_assets=round(random.uniform(100000, 1000000), 2),
total_non_current_assets=round(random.uniform(100000, 1000000), 2),
original_value_fixed_assets=round(random.uniform(100000, 1000000), 2),
accumulated_depreciation=round(random.uniform(10000, 100000), 2),
net_value_fixed_assets=round(random.uniform(100000, 1000000), 2),
total_fixed_assets=round(random.uniform(100000, 1000000), 2),
total_intangible_and_other_assets=round(random.uniform(10000, 100000), 2),
total_assets=round(random.uniform(1000000, 10000000), 2),
short_term_loans=round(random.uniform(10000, 100000), 2),
notes_payable=round(random.uniform(10000, 100000), 2),
accounts_payable=round(random.uniform(10000, 100000), 2),
advance_payments=round(random.uniform(10000, 100000), 2),
interest_payable=round(random.uniform(1000, 10000), 2),
other_payables=round(random.uniform(1000, 10000), 2),
total_current_liabilities=round(random.uniform(100000, 1000000), 2),
long_term_loans=round(random.uniform(10000, 100000), 2),
bonds_payable=round(random.uniform(10000, 100000), 2),
total_non_current_liabilities=round(random.uniform(100000, 1000000), 2),
total_liabilities=round(random.uniform(1000000, 10000000), 2),
undistributed_profit=round(random.uniform(10000, 100000), 2),
total_equity=round(random.uniform(100000, 1000000), 2),
operating_income=round(random.uniform(100000, 1000000), 2),
operating_costs=round(random.uniform(10000, 100000), 2),
interest_expense=round(random.uniform(1000, 10000), 2),
net_profit=round(random.uniform(10000, 100000), 2),
audited=random.choice(['', '']),
accounting_firm=random.choice(['普华永道中天会计师事务所(特殊普通合伙)', '安永华明会计师事务所(特殊普通合伙)', '毕马威华振会计师事务所(特殊普通合伙)', '德勤华永会计师事务所(特殊普通合伙)']),
)
simple_financial_report.save()
# 创建企业信用数据
def generate_company_credit_data(company):
company_credit_data = CompanyCreditData(
company_credit_data_id=shortuuid.uuid(),
company=company,
company_name=company.company_name,
years_in_operation=random.randint(1, 30),
shareholder_changes_last_three_years=random.randint(0, 5),
negative_public_opinions_ratio=round(random.uniform(0, 1), 2),
litigation_announcements=random.randint(0, 10),
tax_credit_rating=random.choice(['A', 'B', 'C', 'D']),
double_random_check_result=fake.sentence(),
abnormal_business_operations=random.randint(0, 10),
tax_notice=random.randint(0, 10),
admin_penalty_warnings=random.randint(0, 10),
admin_penalty_confiscation=random.randint(0, 10),
judgment_debtor=random.randint(0, 10),
dishonest_judgment_debtor=random.randint(0, 10),
tax_violations=random.randint(0, 10),
serious_violations=random.randint(0, 10),
)
company_credit_data.save()
def main():
# 生成30条模拟数据
for _ in range(30):
company = generate_company_research_info()
generate_company_credit_data(company)
for year in range(2019, 2024):
generate_simple_financial_report(company, year)
if __name__ == "__main__":
main()