-- ============================================
-- MES 设备管理-计量器具 & 计量检测记录 模块初始化脚本
-- 1. 建表  2. 菜单  3. 字典  4. 站内信模板  5. 全局配置
-- ============================================

-- 1. 建表
DROP TABLE IF EXISTS `mes_dv_metering_check`;
DROP TABLE IF EXISTS `mes_dv_metering`;
CREATE TABLE `mes_dv_metering` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计量器具编码',
    `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计量器具名称',
    `specification` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '规格型号',
    `brand` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '品牌/生产厂家',
    `category` int NULL DEFAULT NULL COMMENT '器具类别（卡尺/千分尺/压力表等），字典 mes_dv_metering_category',
    `precision` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '精度',
    `range` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '量程',
    `dept_id` bigint NULL DEFAULT NULL COMMENT '使用部门编号',
    `charge_user_id` bigint NULL DEFAULT NULL COMMENT '责任人编号（站内信发送对象）',
    `check_cycle_count` int NOT NULL COMMENT '校准周期（月）',
    `use_date` date NULL DEFAULT NULL COMMENT '投入使用日期',
    `last_check_date` date NULL DEFAULT NULL COMMENT '上次检测日期',
    `next_check_date` date NULL DEFAULT NULL COMMENT '下次检测日期（到期日）',
    `status` int NOT NULL COMMENT '状态（在用/停用/报废），字典 mes_dv_metering_status',
    `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',

    -- 标准字段
    `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`) USING BTREE,
    UNIQUE INDEX `uk_code` (`code`),
    INDEX `idx_dept_id` (`dept_id`),
    INDEX `idx_charge_user_id` (`charge_user_id`),
    INDEX `idx_next_check_date` (`next_check_date`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 计量器具' ROW_FORMAT = Dynamic;

CREATE TABLE `mes_dv_metering_check` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `metering_id` bigint NOT NULL COMMENT '计量器具ID',
    `check_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '检测编号',
    `check_date` date NULL DEFAULT NULL COMMENT '检测日期',
    `check_org` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '检测机构',
    `check_result` int NULL DEFAULT NULL COMMENT '检测结论（合格/不合格），字典 mes_dv_metering_check_result',
    `cert_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '证书编号',
    `check_user_id` bigint NULL DEFAULT NULL COMMENT '检测人编号',
    `next_check_date` date NULL DEFAULT NULL COMMENT '下次检测日期（自动计算或手动指定）',
    `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',

    -- 标准字段
    `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`) USING BTREE,
    UNIQUE INDEX `uk_check_code` (`check_code`),
    INDEX `idx_metering_id` (`metering_id`),
    INDEX `idx_check_date` (`check_date`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'MES 计量检测记录' ROW_FORMAT = Dynamic;

-- 2. 菜单（父菜单 5300 设备管理）
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (5380, '计量器具', '', 2, 8, 5300, 'metering', 'ep:scale-to-original', 'mes/dv/metering/index', 'MesDvMetering', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
(5381, '计量器具查询', 'mes:dv-metering:query', 3, 1, 5380, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5382, '计量器具创建', 'mes:dv-metering:create', 3, 2, 5380, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5383, '计量器具更新', 'mes:dv-metering:update', 3, 3, 5380, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5384, '计量器具删除', 'mes:dv-metering:delete', 3, 4, 5380, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5385, '计量器具导出', 'mes:dv-metering:export', 3, 5, 5380, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (5386, '计量检测记录', '', 2, 9, 5300, 'metering-check', 'ep:checked', 'mes/dv/meteringcheck/index', 'MesDvMeteringCheck', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
(5387, '检测记录查询', 'mes:dv-metering-check:query', 3, 1, 5386, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5388, '检测记录创建', 'mes:dv-metering-check:create', 3, 2, 5386, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5389, '检测记录更新', 'mes:dv-metering-check:update', 3, 3, 5386, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5390, '检测记录删除', 'mes:dv-metering-check:delete', 3, 4, 5386, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
(5391, '检测记录导出', 'mes:dv-metering-check:export', 3, 5, 5386, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- 3. 字典类型
INSERT INTO `system_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
('MES 计量器具类别', 'mes_dv_metering_category', 0, '计量器具类别', '1', NOW(), '1', NOW(), b'0'),
('MES 计量器具状态', 'mes_dv_metering_status', 0, '计量器具状态', '1', NOW(), '1', NOW(), b'0'),
('MES 计量检测结论', 'mes_dv_metering_check_result', 0, '计量检测结论', '1', NOW(), '1', NOW(), b'0');

-- 4. 字典数据
INSERT INTO `system_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
-- 器具类别
(1, '卡尺', '1', 'mes_dv_metering_category', 0, '', '', '卡尺', '1', NOW(), '1', NOW(), b'0'),
(2, '千分尺', '2', 'mes_dv_metering_category', 0, '', '', '千分尺', '1', NOW(), '1', NOW(), b'0'),
(3, '压力表', '3', 'mes_dv_metering_category', 0, '', '', '压力表', '1', NOW(), '1', NOW(), b'0'),
(4, '温度计', '4', 'mes_dv_metering_category', 0, '', '', '温度计', '1', NOW(), '1', NOW(), b'0'),
(5, '万用表', '5', 'mes_dv_metering_category', 0, '', '', '万用表', '1', NOW(), '1', NOW(), b'0'),
(6, '天平砝码', '6', 'mes_dv_metering_category', 0, '', '', '天平砝码', '1', NOW(), '1', NOW(), b'0'),
(7, '其他', '7', 'mes_dv_metering_category', 0, '', '', '其他', '1', NOW(), '1', NOW(), b'0'),
-- 器具状态
(1, '在用', '1', 'mes_dv_metering_status', 0, 'success', '', '在用', '1', NOW(), '1', NOW(), b'0'),
(2, '停用', '2', 'mes_dv_metering_status', 0, 'info', '', '停用', '1', NOW(), '1', NOW(), b'0'),
(3, '报废', '3', 'mes_dv_metering_status', 0, 'danger', '', '报废', '1', NOW(), '1', NOW(), b'0'),
-- 检测结论
(1, '合格', '1', 'mes_dv_metering_check_result', 0, 'success', '', '合格', '1', NOW(), '1', NOW(), b'0'),
(2, '不合格', '2', 'mes_dv_metering_check_result', 0, 'danger', '', '不合格', '1', NOW(), '1', NOW(), b'0');

-- 5. 站内信模板
INSERT INTO `system_notify_template` (`name`, `code`, `nickname`, `content`, `type`, `params`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES ('计量器具到期提醒', 'mes_metering_expire_remind', 'MES 系统', '计量器具【{meteringCode}】{meteringName} 将于 {nextCheckDate} 到期，请及时安排校准/检定。', 2, '["meteringCode","meteringName","nextCheckDate"]', 0, '1', NOW(), '1', NOW(), b'0');

-- 6. 全局配置（提醒天数，默认 30 天）
INSERT INTO `infra_config` (`category`, `type`, `name`, `config_key`, `value`, `visible`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES ('biz', 2, 'MES 计量器具到期提醒天数', 'mes.dv-metering.remind-days', '30', 0, '计量器具下次检测日期到期前 N 天提醒（站内信发送给责任人）', '1', NOW(), '1', NOW(), b'0');
