| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """根据 hzdyjs_xg.sql 模型生成「学生可提取第三方信息」Excel 清单(单表版)"""
- from openpyxl import Workbook
- from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
- from openpyxl.utils import get_column_letter
- OUTPUT = "学生信息第三方提取清单.xlsx"
- HEADER_FILL = PatternFill("solid", fgColor="4472C4")
- HEADER_FONT = Font(bold=True, color="FFFFFF", size=11)
- THIN = Side(style="thin")
- BORDER = Border(left=THIN, right=THIN, top=THIN, bottom=THIN)
- WRAP = Alignment(wrap_text=True, vertical="center")
- CENTER = Alignment(horizontal="center", vertical="center", wrap_text=True)
- # (数据表, 字段名, 中文名称, 数据类型, 说明)
- FIELDS = [
- # ── xg_student_msg 学生信息主表 ──
- ("xg_student_msg", "student_no", "学号", "varchar(32)", "学号,唯一标识"),
- ("xg_student_msg", "name", "姓名", "varchar(50)", ""),
- ("xg_student_msg", "name_english", "英文姓名", "varchar(100)", ""),
- ("xg_student_msg", "former_name", "曾用名", "varchar(50)", ""),
- ("xg_student_msg", "gender", "性别", "char(1)", "0-男,1-女"),
- ("xg_student_msg", "birth_date", "出生日期", "date", ""),
- ("xg_student_msg", "nationality", "民族", "varchar(20)", ""),
- ("xg_student_msg", "native_place", "籍贯", "varchar(20)", ""),
- ("xg_student_msg", "political_status", "政治面貌", "varchar(20)", ""),
- ("xg_student_msg", "id_card", "身份证号", "varchar(18)", ""),
- ("xg_student_msg", "photo_url", "照片URL", "varchar(500)", ""),
- ("xg_student_msg", "phone", "手机号码", "varchar(20)", ""),
- ("xg_student_msg", "email", "电子邮箱", "varchar(100)", ""),
- ("xg_student_msg", "qq", "QQ号码", "varchar(20)", ""),
- ("xg_student_msg", "wechat", "微信号", "varchar(50)", ""),
- ("xg_student_msg", "postal_code", "邮政编码", "varchar(10)", ""),
- ("xg_student_msg", "home_address", "家庭地址", "varchar(1000)", ""),
- ("xg_student_msg", "current_address", "现住址", "varchar(1000)", ""),
- ("xg_student_msg", "hukou_location", "户籍所在地", "varchar(1000)", ""),
- ("xg_student_msg", "student_status", "学籍状态", "char(1)", "1-在籍,2-休学,3-复学,4-退学,5-毕业,6-不在籍"),
- ("xg_student_msg", "enrollment_year", "入学年份", "int(4)", ""),
- ("xg_student_msg", "enrollment_date", "入学日期", "date", ""),
- ("xg_student_msg", "admission_category", "录取类别", "varchar(20)", "统招、自主招生、专项计划等"),
- ("xg_student_msg", "school_system", "学制(年)", "int(2)", ""),
- ("xg_student_msg", "academic_level", "学历层次", "varchar(20)", ""),
- ("xg_student_msg", "training_type", "培养方式", "varchar(20)", "全日制、在职、函授、夜大等"),
- ("xg_student_msg", "major_id", "专业ID", "varchar(100)", ""),
- ("xg_student_msg", "major_name", "专业名称", "varchar(100)", ""),
- ("xg_student_msg", "class_id", "班级ID", "varchar(100)", ""),
- ("xg_student_msg", "class_name", "班级名称", "varchar(100)", ""),
- ("xg_student_msg", "grade", "年级", "varchar(10)", ""),
- ("xg_student_msg", "college_id", "学院ID", "varchar(100)", ""),
- ("xg_student_msg", "college_name", "学院名称", "varchar(100)", ""),
- ("xg_student_msg", "counselor_name", "辅导员姓名", "varchar(50)", ""),
- ("xg_student_msg", "class_teacher_name", "班主任姓名", "varchar(50)", ""),
- ("xg_student_msg", "is_boarder", "是否住校", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "education_level", "文化程度", "varchar(20)", ""),
- ("xg_student_msg", "household_register_type", "户口类型", "varchar(20)", "农业、非农业"),
- ("xg_student_msg", "religion", "宗教信仰", "varchar(200)", ""),
- ("xg_student_msg", "source_region", "生源地区", "varchar(100)", "省市县"),
- ("xg_student_msg", "graduate_school", "毕业院校", "varchar(100)", "升学前毕业院校"),
- ("xg_student_msg", "marital_status", "婚姻状况", "varchar(10)", "1未婚、2已婚、3离异、4丧偶"),
- ("xg_student_msg", "emergency_contact_name", "紧急联系人姓名", "varchar(50)", ""),
- ("xg_student_msg", "emergency_contact_phone", "紧急联系人电话", "varchar(20)", ""),
- ("xg_student_msg", "emergency_contact_relation", "紧急联系人关系", "varchar(100)", ""),
- ("xg_student_msg", "is_poor_student", "是否贫困生", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "is_minority", "是否少数民族", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "is_disabled", "是否残疾", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "is_orphan", "是否孤儿", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "is_left_behind_child", "是否留守儿童", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "is_single_child", "是否独生子女", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "is_low_income", "是否低保", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "has_loan", "是否有助学贷款", "tinyint(1)", "0-否,1-是"),
- ("xg_student_msg", "loan_amount", "助学贷款金额", "decimal(10,2)", ""),
- ("xg_student_msg", "father_name", "父亲姓名", "varchar(50)", ""),
- ("xg_student_msg", "father_phone", "父亲电话", "varchar(20)", ""),
- ("xg_student_msg", "father_work_unit", "父亲工作单位", "varchar(1000)", ""),
- ("xg_student_msg", "mother_name", "母亲姓名", "varchar(50)", ""),
- ("xg_student_msg", "mother_phone", "母亲电话", "varchar(20)", ""),
- ("xg_student_msg", "mother_work_unit", "母亲工作单位", "varchar(1000)", ""),
- ("xg_student_msg", "guardian_name", "监护人姓名", "varchar(50)", ""),
- ("xg_student_msg", "guardian_phone", "监护人电话", "varchar(20)", ""),
- ("xg_student_msg", "guardian_relation", "监护人关系", "varchar(20)", ""),
- ("xg_student_msg", "family_income", "家庭年收入", "decimal(12,2)", ""),
- ("xg_student_msg", "per_capita_income", "人均收入", "decimal(12,2)", ""),
- ("xg_student_msg", "income_source", "收入来源", "varchar(100)", ""),
- ("xg_student_msg", "family_economic_status", "家庭经济状况", "varchar(20)", "富裕、一般、困难、特困"),
- ("xg_student_msg", "family_members", "家庭成员数量", "tinyint(2)", ""),
- ("xg_student_msg", "height", "身高(cm)", "decimal(10,2)", ""),
- ("xg_student_msg", "weight", "体重(kg)", "decimal(10,2)", ""),
- ("xg_student_msg", "blood_type", "血型", "varchar(10)", ""),
- ("xg_student_msg", "health_status", "健康状况", "varchar(1000)", ""),
- ("xg_student_msg", "special_condition", "特殊体质或疾病", "varchar(1000)", ""),
- ("xg_student_msg", "medical_history", "病史", "varchar(1000)", ""),
- ("xg_student_msg", "allergies", "过敏史", "varchar(1000)", ""),
- ("xg_student_msg", "disability_type", "残疾类型", "varchar(50)", "1视力、2听力、3智力、9其他"),
- ("xg_student_msg", "disability_level", "残疾等级", "varchar(20)", ""),
- ("xg_student_msg", "bank_card_no", "银行卡号", "varchar(30)", ""),
- ("xg_student_msg", "bank_name", "开户银行", "varchar(100)", ""),
- ("xg_student_msg", "bank_branch", "开户支行", "varchar(100)", ""),
- ("xg_student_msg", "card_holder_name", "持卡人姓名", "varchar(50)", ""),
- ("xg_student_msg", "specialties", "特长爱好", "text", ""),
- ("xg_student_msg", "awards", "获奖情况", "text", ""),
- ("xg_student_msg", "violations", "违纪记录", "text", ""),
- ("xg_student_msg", "social_activities", "社会活动", "text", ""),
- ("xg_student_msg", "dormitory_building", "宿舍楼栋", "varchar(100)", ""),
- ("xg_student_msg", "dormitory_room", "宿舍房间号", "varchar(100)", ""),
- # ── xg_class_msg 班级信息表 ──
- ("xg_class_msg", "class_code", "班级代码", "varchar(32)", ""),
- ("xg_class_msg", "class_name", "班级名称", "varchar(100)", ""),
- ("xg_class_msg", "college_name", "学院名称", "varchar(100)", ""),
- ("xg_class_msg", "major_name", "专业名称", "varchar(100)", ""),
- ("xg_class_msg", "grade", "年级", "varchar(10)", ""),
- ("xg_class_msg", "enrollment_year", "入学年份", "int(4)", ""),
- ("xg_class_msg", "graduation_year", "毕业年份", "int(4)", ""),
- ("xg_class_msg", "school_system", "学制", "int(11)", ""),
- ("xg_class_msg", "training_type", "培养方式", "varchar(20)", ""),
- ("xg_class_msg", "degree_type", "学位类型", "varchar(20)", ""),
- ("xg_class_msg", "counselor_name", "辅导员姓名", "varchar(50)", ""),
- ("xg_class_msg", "class_teacher_name", "班主任姓名", "varchar(50)", ""),
- ("xg_class_msg", "class_status", "班级状态", "char(1)", "1-正常,2-暂停,3-毕业,4-解散"),
- # ── xg_dorm_bed_student 宿舍分配表 ──
- ("xg_dorm_bed_student", "student_id", "学生ID", "bigint(20)", "关联 xg_student_msg.id"),
- ("xg_dorm_bed_student", "bed_id", "床位ID", "bigint(20)", ""),
- ("xg_dorm_bed_student", "room_id", "房间ID", "bigint(20)", ""),
- ("xg_dorm_bed_student", "building_id", "宿舍楼ID", "bigint(20)", ""),
- ("xg_dorm_bed_student", "campus_id", "校区ID", "bigint(20)", ""),
- ("xg_dorm_bed_student", "status", "状态", "char(1)", "0-正常,1-已退宿"),
- ("xg_dorm_bed_student", "assign_time", "分配时间", "datetime", ""),
- # ── xg_student_leave 请假记录表 ──
- ("xg_student_leave", "student_no", "学号", "varchar(20)", ""),
- ("xg_student_leave", "student_name", "学生姓名", "varchar(50)", ""),
- ("xg_student_leave", "class_name", "班级名称", "varchar(100)", ""),
- ("xg_student_leave", "college_name", "学院名称", "varchar(100)", ""),
- ("xg_student_leave", "leave_type_name", "请假类型", "varchar(50)", ""),
- ("xg_student_leave", "start_time", "开始时间", "datetime", ""),
- ("xg_student_leave", "end_time", "结束时间", "datetime", ""),
- ("xg_student_leave", "leave_duration", "请假时长(天)", "decimal(5,2)", ""),
- ("xg_student_leave", "is_leave_school", "是否离校", "char(1)", "0-否,1-是"),
- ("xg_student_leave", "leave_reason", "请假原因", "text", ""),
- ("xg_student_leave", "approval_status", "审批状态", "char(100)", ""),
- # ── xg_student_status_change 学籍异动表 ──
- ("xg_student_status_change", "student_no", "学号", "varchar(100)", ""),
- ("xg_student_status_change", "change_type", "异动类型", "varchar(20)", "TUI_XUE退学、XIU_XUE休学、FU_XUE复学、BI_YE毕业"),
- ("xg_student_status_change", "apply_date", "申请日期", "datetime", ""),
- ("xg_student_status_change", "effective_date", "生效日期", "datetime", ""),
- ("xg_student_status_change", "reason", "异动原因", "varchar(1000)", ""),
- # ── xg_student_class_change 换班记录表 ──
- ("xg_student_class_change", "student_no", "学号", "varchar(32)", ""),
- ("xg_student_class_change", "student_name", "学生姓名", "varchar(50)", ""),
- ("xg_student_class_change", "original_class_name", "原班级名称", "varchar(100)", ""),
- ("xg_student_class_change", "new_class_name", "新班级名称", "varchar(100)", ""),
- ("xg_student_class_change", "change_time", "换班时间", "datetime", ""),
- ("xg_student_class_change", "change_reason", "换班原因", "varchar(500)", ""),
- # ── jcbt_work_study_application 勤工助学申请表 ──
- ("jcbt_work_study_application", "student_number", "学号", "varchar(20)", ""),
- ("jcbt_work_study_application", "student_name", "学生姓名", "varchar(50)", ""),
- ("jcbt_work_study_application", "college_name", "学院名称", "varchar(100)", ""),
- ("jcbt_work_study_application", "major", "专业", "varchar(100)", ""),
- ("jcbt_work_study_application", "grade", "年级", "varchar(10)", ""),
- ("jcbt_work_study_application", "class_name", "班级", "varchar(50)", ""),
- ("jcbt_work_study_application", "phone", "联系电话", "varchar(20)", ""),
- ("jcbt_work_study_application", "id_card", "身份证号", "varchar(18)", ""),
- ("jcbt_work_study_application", "position_name", "岗位名称", "varchar(100)", ""),
- ("jcbt_work_study_application", "status", "申请状态", "varchar(20)", ""),
- ]
- def main():
- wb = Workbook()
- ws = wb.active
- ws.title = "学生可提取信息"
- headers = ["序号", "数据表", "字段名", "中文名称", "数据类型", "说明"]
- ws.append(headers)
- for cell in ws[1]:
- cell.fill = HEADER_FILL
- cell.font = HEADER_FONT
- cell.alignment = CENTER
- cell.border = BORDER
- for i, row in enumerate(FIELDS, 1):
- ws.append([i, *row])
- for cell in ws[ws.max_row]:
- cell.alignment = WRAP
- cell.border = BORDER
- for col in ws.columns:
- letter = get_column_letter(col[0].column)
- width = max(len(str(c.value or "")) for c in col)
- ws.column_dimensions[letter].width = min(max(width + 2, 8), 40)
- ws.column_dimensions["A"].width = 6
- ws.column_dimensions["B"].width = 28
- ws.column_dimensions["F"].width = 40
- ws.freeze_panes = "A2"
- wb.save(OUTPUT)
- print(f"已生成: {OUTPUT}(共 {len(FIELDS)} 条)")
- if __name__ == "__main__":
- main()
|