-- ----------------------------
-- 维保工单表
-- ----------------------------
DROP TABLE IF EXISTS `wl_maintenance_work_order`;
CREATE TABLE `wl_maintenance_work_order`
(
    `id`                     BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '工单ID',
    `order_code`             VARCHAR(50)  NOT NULL COMMENT '工单编码',
    `order_status`           VARCHAR(20)  NOT NULL DEFAULT 'draft' COMMENT '工单状态：draft-草稿,to_assign-待派单,assigned-已派单,accepted-已接单,processing-处理中,paused-暂停中,to_approve-待审批,suspended-已挂起,completed-已完成',
    `maintenance_center`     VARCHAR(100) NULL     DEFAULT NULL COMMENT '维保中心',
    `wind_farm`              VARCHAR(100) NULL     DEFAULT NULL COMMENT '风电场',
    `turbine_brand_model`    VARCHAR(100) NULL     DEFAULT NULL COMMENT '风机品牌/型号',
    `maintenance_plan_code`  VARCHAR(50)  NULL     DEFAULT NULL COMMENT '维保计划编号',
    `planned_repair_date`    DATETIME     NULL     DEFAULT NULL COMMENT '计划检修日期',
    `order_source`           VARCHAR(50)  NULL     DEFAULT NULL COMMENT '工单来源',
    `assign_time`            DATETIME     NULL     DEFAULT NULL COMMENT '派单时间',
    `assign_user_id`         BIGINT(20)   NULL     DEFAULT NULL COMMENT '派单人ID',
    `assign_user_name`       VARCHAR(50)  NULL     DEFAULT NULL COMMENT '派单人姓名',
    `accept_time`            DATETIME     NULL     DEFAULT NULL COMMENT '接单时间',
    `accept_user_id`         BIGINT(20)   NULL     DEFAULT NULL COMMENT '接单人ID',
    `accept_user_name`       VARCHAR(50)  NULL     DEFAULT NULL COMMENT '接单人姓名',
    `team_leader_id`         BIGINT(20)   NULL     DEFAULT NULL COMMENT '班组组长ID',
    `team_leader_name`       VARCHAR(50)  NULL     DEFAULT NULL COMMENT '班组组长姓名',
    `work_group_member_id`   BIGINT(20)   NULL     DEFAULT NULL COMMENT '工作组成员ID',
    `work_group_member_name` VARCHAR(50)  NULL     DEFAULT NULL COMMENT '工作组成员姓名',
    `suspend_reason`         VARCHAR(500) NULL     DEFAULT NULL COMMENT '挂起原因',
    `suspend_time`           DATETIME     NULL     DEFAULT NULL COMMENT '挂起时间',
    `restart_time`           DATETIME     NULL     DEFAULT NULL COMMENT '重启时间',
    `complete_time`          DATETIME     NULL     DEFAULT NULL COMMENT '完成时间',
    `create_by`              VARCHAR(64)  NULL     DEFAULT NULL COMMENT '创建者',
    `create_time`            DATETIME     NULL     DEFAULT NULL COMMENT '创建时间',
    `update_by`              VARCHAR(64)  NULL     DEFAULT NULL COMMENT '更新者',
    `update_time`            DATETIME     NULL     DEFAULT NULL COMMENT '更新时间',
    `remark`                 VARCHAR(500) NULL     DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`) USING BTREE,
    UNIQUE INDEX `idx_order_code` (`order_code`) USING BTREE COMMENT '工单编码唯一索引',
    INDEX `idx_order_status` (`order_status`) USING BTREE COMMENT '工单状态索引',
    INDEX `idx_maintenance_center` (`maintenance_center`) USING BTREE COMMENT '维保中心索引',
    INDEX `idx_wind_farm` (`wind_farm`) USING BTREE COMMENT '风电场索引',
    INDEX `idx_order_source` (`order_source`) USING BTREE COMMENT '工单来源索引',
    INDEX `idx_create_time` (`create_time`) USING BTREE COMMENT '创建时间索引'
) ENGINE = InnoDB
  AUTO_INCREMENT = 1
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_general_ci COMMENT = '维保工单表'
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- 工单流转记录表
-- ----------------------------
DROP TABLE IF EXISTS `wl_work_order_flow`;
CREATE TABLE `wl_work_order_flow`
(
    `id`            BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '流转记录ID',
    `order_id`      BIGINT(20)   NOT NULL COMMENT '工单ID',
    `order_code`    VARCHAR(50)  NOT NULL COMMENT '工单编码',
    `action_type`   VARCHAR(50)  NOT NULL COMMENT '操作类型：create-创建,assign-派单,accept-接单,process-处理,pause-暂停,suspend-挂起,restart-重启,approve-审批,complete-完成',
    `from_status`   VARCHAR(20)  NULL     DEFAULT NULL COMMENT '原状态',
    `to_status`     VARCHAR(20)  NOT NULL COMMENT '目标状态',
    `operator_id`   BIGINT(20)   NULL     DEFAULT NULL COMMENT '操作人ID',
    `operator_name` VARCHAR(50)  NULL     DEFAULT NULL COMMENT '操作人姓名',
    `action_time`   DATETIME     NOT NULL COMMENT '操作时间',
    `action_remark` VARCHAR(500) NULL     DEFAULT NULL COMMENT '操作备注',
    `create_by`     VARCHAR(64)  NULL     DEFAULT NULL COMMENT '创建者',
    `create_time`   DATETIME     NULL     DEFAULT NULL COMMENT '创建时间',
    PRIMARY KEY (`id`) USING BTREE,
    INDEX `idx_order_id` (`order_id`) USING BTREE COMMENT '工单ID索引',
    INDEX `idx_order_code` (`order_code`) USING BTREE COMMENT '工单编码索引',
    INDEX `idx_action_time` (`action_time`) USING BTREE COMMENT '操作时间索引'
) ENGINE = InnoDB
  AUTO_INCREMENT = 1
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_general_ci COMMENT = '工单流转记录表'
  ROW_FORMAT = Dynamic;

-- ----------------------------
-- 插入测试数据
-- ----------------------------
INSERT INTO `wl_maintenance_work_order` VALUES (1, 'WO2025100001', 'draft', '华北维保中心', '张北风电场', '金风GW121/2500', 'MP2025100001', '2025-10-30 08:00:00', '计划维护', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2025-10-25 10:00:00', NULL, NULL, '定期维保工单');
INSERT INTO `wl_maintenance_work_order` VALUES (2, 'WO2025100002', 'to_assign', '华东维保中心', '如东风电场', '远景EN-156/4.5', 'MP2025100002', '2025-10-28 09:00:00', '故障维修', NULL, NULL, NULL, NULL, NULL, NULL, 1, '张三', NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2025-10-25 11:00:00', NULL, NULL, '紧急故障处理');
INSERT INTO `wl_maintenance_work_order` VALUES (3, 'WO2025100003', 'assigned', '西北维保中心', '酒泉风电场', 'Vestas V150/4.2', 'MP2025100003', '2025-11-01 10:00:00', '计划维护', '2025-10-25 14:00:00', 1, '管理员', NULL, NULL, NULL, 2, '李四', NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2025-10-25 09:00:00', 'admin', '2025-10-25 14:00:00', '年度大修');
