-- ----------------------------
-- 2025-01-20 10:36
-- 需要进行课程管理的班级
-- ----------------------------
DROP TABLE IF EXISTS base_class_admin_course;
CREATE TABLE `base_class_admin_course`
(
    id                  BIGINT        NOT NULL COMMENT '主键编号'
        PRIMARY KEY,
    create_user_id      BIGINT        NULL COMMENT '创建人',
    create_date         DATETIME      NULL COMMENT '创建时间',
    modify_user_id      BIGINT        NULL COMMENT '修改人',
    modify_date         DATETIME      NULL COMMENT '修改时间',
    delete_mark         INT           NOT NULL COMMENT '删除标记',
    enabled_mark        INT           NOT NULL COMMENT '有效标志',
    sort_code           INT           NULL COMMENT '序号',
    remark              VARCHAR(1000) NULL COMMENT '备注',

    class_id         BIGINT      NULL COMMENT '班级id(base_class)',
    base_semester_id BIGINT      NULL COMMENT '学期id'
) ENGINE = INNODB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci COMMENT ='需要进行课程管理的班级';

ALTER TABLE base_class_course
    MODIFY class_id BIGINT NULL COMMENT '需要进行课程管理的班级id(base_class_admin_course)(原有班级主键id字段)';

ALTER TABLE textbook_subscription_item
    ADD use_class_num INT DEFAULT 0 NULL COMMENT '在本次征订中本征订项的教材使用的班级数量';

-- ----------------------------
-- 2025-01-22 14:36
-- 教材征订记录详情与班级关联表
-- ----------------------------
DROP TABLE IF EXISTS textbook_subscription_item_class;
CREATE TABLE `textbook_subscription_item_class`
(
    id                       BIGINT        NOT NULL COMMENT '主键编号'
        PRIMARY KEY,
    create_user_id           BIGINT        NULL COMMENT '创建人',
    create_date              DATETIME      NULL COMMENT '创建时间',
    modify_user_id           BIGINT        NULL COMMENT '修改人',
    modify_date              DATETIME      NULL COMMENT '修改时间',
    delete_mark              INT           NOT NULL COMMENT '删除标记',
    enabled_mark             INT           NOT NULL COMMENT '有效标志',
    sort_code                INT           NULL COMMENT '序号',
    remark                   VARCHAR(1000) NULL COMMENT '备注',

    textbook_subscription_item_id BIGINT        NOT NULL COMMENT '教材征订记录详情表id(textbook_subscription)',
    base_class_id            BIGINT        NOT NULL COMMENT '按班级征订中征订的班级主键(base_class)'
) ENGINE = INNODB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_0900_ai_ci COMMENT ='教材征订记录详情与班级关联表';

DROP TABLE IF EXISTS student_change_record;
CREATE TABLE `student_change_record`  (
  `id` BIGINT NOT NULL COMMENT '主键',
  `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
  `create_date` DATETIME(3) NULL DEFAULT NULL COMMENT '创建时间',
  `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人id',
  `modify_date` DATETIME(3) NULL DEFAULT NULL COMMENT '修改日期',
  `delete_mark` SMALLINT NULL DEFAULT NULL COMMENT '删除标记(0:未删除 1:已删除)',
  `enabled_mark` SMALLINT NULL DEFAULT NULL COMMENT '有效标记(0:未启用 1:已启用)',
  `user_id` BIGINT NULL DEFAULT NULL COMMENT '学生id(xjr_user)',
  `change_type` VARCHAR(50) NULL DEFAULT NULL COMMENT '异动类型',
  `before_data` VARCHAR(200) NULL DEFAULT NULL COMMENT '异动前数据',
  `before_data_code` VARCHAR(200) NULL DEFAULT NULL COMMENT '异动前数据code',
  `after_data` VARCHAR(200) NULL DEFAULT NULL COMMENT '异动后数据',
  `after_data_code` VARCHAR(200) NULL DEFAULT NULL COMMENT '异动后数据code',
  `operate_mode` INT NULL DEFAULT NULL COMMENT '操作方式(1:系统 2:流程 3:人为)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = INNODB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '学生异动记录表';

-- ---------------------------------------------------------------
-- 学生报到计划
-- ---------------------------------------------------------------
DROP TABLE IF EXISTS student_report_plan;
CREATE TABLE `student_report_plan`  (
  `id` BIGINT NOT NULL COMMENT '主键',
  `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
  `create_date` DATETIME(3) NULL DEFAULT NULL COMMENT '创建时间',
  `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人id',
  `modify_date` DATETIME(3) NULL DEFAULT NULL COMMENT '修改日期',
  `delete_mark` SMALLINT NULL DEFAULT NULL COMMENT '删除标记(0:未删除 1:已删除)',
  `enabled_mark` SMALLINT NULL DEFAULT NULL COMMENT '有效标记(0:未启用 1:已启用)',
  `semester_id` BIGINT NULL DEFAULT NULL COMMENT '学期id(base_semester)',
  `name` VARCHAR(100) NULL DEFAULT NULL COMMENT '计划名称',
  `start_time` DATETIME NULL DEFAULT NULL COMMENT '报到开始时间',
  `end_time` DATETIME NULL DEFAULT NULL COMMENT '报到结束时间',
  `update_start_time` DATETIME NULL DEFAULT NULL COMMENT '数据修改开始时间',
  `update_end_time` DATETIME NULL DEFAULT NULL COMMENT '数据修改结束时间',
  `status` INT NULL DEFAULT 0 COMMENT '状态(0:草稿 1:进行中 2:已结束)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = INNODB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '学生报到计划';

-- ---------------------------------------------------------------
-- 学生报到计划-班级
-- ---------------------------------------------------------------
DROP TABLE IF EXISTS student_report_plan_class_relation;
CREATE TABLE `student_report_plan_class_relation`  (
  `id` BIGINT NOT NULL COMMENT '主键',
  `student_report_plan_id` BIGINT NULL DEFAULT NULL COMMENT '计划id',
  `class_id` BIGINT NULL DEFAULT NULL COMMENT '班级id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = INNODB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '学生报到计划-班级';

ALTER TABLE `student_report_record`
  ADD COLUMN `student_report_plan_id` BIGINT NULL   COMMENT '报到计划id' AFTER `base_semester_id`;

ALTER TABLE textbook_subscription_item
    ADD base_class_ids VARCHAR(1024) NULL COMMENT '按班级征订当前征订项的的教材使用的班级的主键';

ALTER TABLE `base_class`
  ADD INDEX (`major_set_id`);

alter table textbook_subscription
    add order_number varchar(256) not null comment '征订单号（标识+当前时间（YYYYMMDDHHmmss）+三位序号）';

alter table textbook_warehouse_record
    add order_number varchar(256) not null comment '入库单号（标识+当前时间（YYYYMMDDHHmmss）+三位序号）';

alter table textbook_warehouse_record
    alter column warehouse_number set default 0;

alter table textbook_warehouse_record
    add actual_warehouse_number int default 0 null comment '实际入库数量（总入库数量 - 退还书店数量）';

alter table textbook_warehouse_record
    add actual_total_price decimal(10, 2) null comment '实际入库金额（实际入库数量 * 实际价格）';

alter table textbook_warehouse_record
    add return_bookstore_number int default 0 null comment '退还书店数量' after order_number;

alter table textbook_warehouse_record
    add issued_number int default 0 null comment '已出库数量';

ALTER TABLE `student_report_record`
  ADD INDEX (`base_semester_id`),
  ADD INDEX (`student_report_plan_id`);

alter table textbook_warehouse_record
    add recede_number int default 0 null comment '领取后退书数量';

alter table textbook_warehouse_record
    add remain_number int default 0 null comment '剩余库存数量';

-- ----------------------------
-- 2025-02-10 14:36
-- 教材入库记录详细入库记录
-- ----------------------------
drop table if exists textbook_warehouse_record_detail;
create table `textbook_warehouse_record_detail`
(
    id               bigint         not null comment '主键编号'
        primary key,
    create_user_id   bigint         null comment '创建人',
    create_date      datetime       null comment '创建时间',
    modify_user_id   bigint         null comment '修改人',
    modify_date      datetime       null comment '修改时间',
    delete_mark      int            not null comment '删除标记',
    enabled_mark     int            not null comment '有效标志',
    sort_code        int            null comment '序号',

    textbook_warehouse_record_id bigint         null comment '教材入库记录主键id(textbook_warehouse_record)',

    warehouse_mode   varchar(20)    null comment '入库方式(xjr_dictionary_item[warehouse_mode])',
    warehouse_number int            null comment '入库数量',
    remark           varchar(1000)  null comment '备注'
) engine = innodb
  default charset = utf8mb4
  collate = utf8mb4_0900_ai_ci comment ='教材入库记录详细入库记录';

alter table textbook_warehouse_record
    add base_semester_id bigint null comment '学期主键id' after sort_code;

alter table wf_textbook_claim
    add textbook_scope int null comment '选择教材范围（1：全部，2：本班）' after class_id;

alter table wf_textbook_claim
    add issue_times int default 0 null comment '当前申领项发放次数';

alter table textbook_issue_record
    add issue_times int default 0 null comment '当前出库对应的申领项的发放次数' after issue_user_id;

alter table wf_textbook_recede_item
    add textbook_issue_record_id bigint null comment '出库主键id（textbook_issue_record）' after wf_textbook_recede_id;


