147 lines
13 KiB
SQL
147 lines
13 KiB
SQL
-- ============================================================
|
||
-- 报工单页面类别与字段控制
|
||
-- 版本:v2.0.003 日期:2026-03-05 作者:周启威
|
||
-- ============================================================
|
||
|
||
-- ============================================================
|
||
-- 1. 创建类别配置表
|
||
-- ============================================================
|
||
CREATE TABLE `pro_report_category_config` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`category_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类别编码(A/B/C/D/E为系统类别,F/G/H...为自定义类别)',
|
||
`category_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类别名称(可自定义修改)',
|
||
`default_category_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '默认类别名称(系统初始名称,用于重置)',
|
||
`category_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'SYSTEM' COMMENT '类别类型(SYSTEM=系统类别/CUSTOM=自定义类别)',
|
||
`is_enabled` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'Y' COMMENT '是否启用(Y=启用/N=停用)',
|
||
`sort_order` int DEFAULT NULL COMMENT '排序号',
|
||
`remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
|
||
`create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建者',
|
||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||
`update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '更新者',
|
||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_category_code` (`category_code`),
|
||
KEY `idx_category_type` (`category_type`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='报工单类别配置表';
|
||
|
||
-- ============================================================
|
||
-- 2. 创建字段配置表
|
||
-- ============================================================
|
||
CREATE TABLE `pro_report_field_config` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`category_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所属类别编码(A/B/C/D/E)',
|
||
`field_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字段编码(系统字段=实体类字段名,自定义字段=custom_field_xxx,不可修改)',
|
||
`field_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字段显示名称(可自定义修改)',
|
||
`default_field_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '默认字段名称(系统初始名称,用于重置)',
|
||
`field_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'SYSTEM' COMMENT '字段类型(SYSTEM=系统字段/CUSTOM=自定义字段)',
|
||
`data_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'STRING' COMMENT '数据类型(STRING=文本/NUMBER=数字/DATE=日期/DATETIME=日期时间/BOOLEAN=布尔/SELECT=下拉选择)',
|
||
`control_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'INPUT' COMMENT '控件类型(INPUT=文本框/NUMBER=数字框/DATE=日期选择/DATETIME=日期时间选择/SELECT=下拉框/TEXTAREA=文本域/SWITCH=开关)',
|
||
`options` text CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '下拉选项(JSON格式,仅当control_type=SELECT时有效)',
|
||
`is_enabled` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'Y' COMMENT '是否启用(Y=启用/N=停用)',
|
||
`is_required` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N' COMMENT '是否必填(Y=必填/N=非必填)',
|
||
`sort_order` int DEFAULT NULL COMMENT '排序号',
|
||
`remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
|
||
`create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建者',
|
||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||
`update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '更新者',
|
||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_category_field` (`category_code`,`field_code`),
|
||
KEY `idx_category_code` (`category_code`),
|
||
KEY `idx_field_type` (`field_type`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='报工单字段配置表';
|
||
|
||
-- ============================================================
|
||
-- 3. 报工单表增加自定义字段JSON列
|
||
-- ============================================================
|
||
ALTER TABLE `pro_report` ADD COLUMN `custom_fields` json DEFAULT NULL COMMENT '自定义字段值(JSON格式)';
|
||
|
||
-- ============================================================
|
||
-- 4. 初始化类别配置数据(系统类别)
|
||
-- ============================================================
|
||
INSERT INTO `pro_report_category_config` (`category_code`, `category_name`, `default_category_name`, `category_type`, `is_enabled`, `sort_order`, `create_by`, `create_time`) VALUES
|
||
('A', '基础信息', '基础信息', 'SYSTEM', 'Y', 1, 'admin', NOW()),
|
||
('B', '数量信息', '数量信息', 'SYSTEM', 'Y', 2, 'admin', NOW()),
|
||
('C', '时间节拍', '时间节拍', 'SYSTEM', 'Y', 3, 'admin', NOW()),
|
||
('D', '成本效益', '成本效益', 'SYSTEM', 'Y', 4, 'admin', NOW()),
|
||
('E', '异常记录', '异常记录', 'SYSTEM', 'Y', 5, 'admin', NOW());
|
||
|
||
-- ============================================================
|
||
-- 5. 初始化字段配置数据
|
||
-- ============================================================
|
||
|
||
-- A. 基础信息字段
|
||
INSERT INTO `pro_report_field_config` (`category_code`, `field_code`, `field_name`, `default_field_name`, `field_type`, `data_type`, `control_type`, `is_enabled`, `is_required`, `sort_order`, `create_by`, `create_time`) VALUES
|
||
('A', 'reportUserId', '报工人', '报工人', 'SYSTEM', 'NUMBER', 'SELECT', 'Y', 'Y', 1, 'admin', NOW()),
|
||
('A', 'reportTime', '报工时间', '报工时间', 'SYSTEM', 'DATETIME', 'DATETIME', 'Y', 'Y', 2, 'admin', NOW()),
|
||
('A', 'reportType', '报工类型', '报工类型', 'SYSTEM', 'STRING', 'SELECT', 'Y', 'N', 3, 'admin', NOW()),
|
||
('A', 'shiftName', '班次', '班次', 'SYSTEM', 'STRING', 'SELECT', 'Y', 'N', 4, 'admin', NOW()),
|
||
('A', 'teamName', '班组', '班组', 'SYSTEM', 'STRING', 'SELECT', 'Y', 'N', 5, 'admin', NOW()),
|
||
('A', 'executionStandard', '执行标准', '执行标准', 'SYSTEM', 'STRING', 'INPUT', 'Y', 'N', 6, 'admin', NOW()),
|
||
('A', 'workshopId', '车间', '车间', 'SYSTEM', 'NUMBER', 'SELECT', 'Y', 'Y', 7, 'admin', NOW()),
|
||
('A', 'stationId', '工位', '工位', 'SYSTEM', 'NUMBER', 'SELECT', 'Y', 'Y', 8, 'admin', NOW());
|
||
|
||
-- B. 数量信息字段
|
||
INSERT INTO `pro_report_field_config` (`category_code`, `field_code`, `field_name`, `default_field_name`, `field_type`, `data_type`, `control_type`, `is_enabled`, `is_required`, `sort_order`, `create_by`, `create_time`) VALUES
|
||
('B', 'planCount', '计划数', '计划数', 'SYSTEM', 'NUMBER', 'INPUT', 'Y', 'N', 1, 'admin', NOW()),
|
||
('B', 'reportQuantity', '报工数量', '报工数量', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'Y', 2, 'admin', NOW()),
|
||
('B', 'qualifiedQuantity', '合格数量', '合格数量', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'Y', 3, 'admin', NOW()),
|
||
('B', 'unqualifiedQuantity', '不合格数量', '不合格数量', 'SYSTEM', 'NUMBER', 'INPUT', 'Y', 'N', 4, 'admin', NOW()),
|
||
('B', 'yieldRate', '良品率', '良品率', 'SYSTEM', 'NUMBER', 'INPUT', 'Y', 'N', 5, 'admin', NOW());
|
||
|
||
-- C. 时间节拍字段
|
||
INSERT INTO `pro_report_field_config` (`category_code`, `field_code`, `field_name`, `default_field_name`, `field_type`, `data_type`, `control_type`, `is_enabled`, `is_required`, `sort_order`, `create_by`, `create_time`) VALUES
|
||
('C', 'planStartTime', '计划开始时间', '计划开始时间', 'SYSTEM', 'DATETIME', 'INPUT', 'Y', 'N', 1, 'admin', NOW()),
|
||
('C', 'planEndTime', '计划完工时间', '计划完工时间', 'SYSTEM', 'DATETIME', 'DATETIME', 'Y', 'N', 2, 'admin', NOW()),
|
||
('C', 'actualStartTime', '实际开始时间', '实际开始时间', 'SYSTEM', 'DATETIME', 'DATETIME', 'Y', 'N', 3, 'admin', NOW()),
|
||
('C', 'actualEndTime', '实际完工时间', '实际完工时间', 'SYSTEM', 'DATETIME', 'DATETIME', 'Y', 'N', 4, 'admin', NOW()),
|
||
('C', 'reportPeriodStart', '报工周期开始', '报工周期开始', 'SYSTEM', 'DATETIME', 'DATETIME', 'Y', 'N', 5, 'admin', NOW()),
|
||
('C', 'reportPeriodEnd', '报工周期结束', '报工周期结束', 'SYSTEM', 'DATETIME', 'DATETIME', 'Y', 'N', 6, 'admin', NOW()),
|
||
('C', 'theoreticalCycleTime', '理论节拍', '理论节拍', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 7, 'admin', NOW()),
|
||
('C', 'downtimeMinutes', '停机时间', '停机时间', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 8, 'admin', NOW()),
|
||
('C', 'downtimeReason', '停机原因', '停机原因', 'SYSTEM', 'STRING', 'INPUT', 'Y', 'N', 9, 'admin', NOW());
|
||
|
||
-- D. 成本效益字段
|
||
INSERT INTO `pro_report_field_config` (`category_code`, `field_code`, `field_name`, `default_field_name`, `field_type`, `data_type`, `control_type`, `is_enabled`, `is_required`, `sort_order`, `create_by`, `create_time`) VALUES
|
||
('D', 'performanceWages', '绩效工资', '绩效工资', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 1, 'admin', NOW()),
|
||
('D', 'energyConsumption', '能耗', '能耗', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 2, 'admin', NOW()),
|
||
('D', 'materialConsumption', '工耗', '工耗', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 3, 'admin', NOW()),
|
||
('D', 'otherCosts', '其他成本', '其他成本', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 4, 'admin', NOW()),
|
||
('D', 'valueAdded', '增值', '增值', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 5, 'admin', NOW()),
|
||
('D', 'stationOee', '工位OEE', '工位OEE', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 6, 'admin', NOW()),
|
||
('D', 'currentBenefit', '本次效益', '本次效益', 'SYSTEM', 'NUMBER', 'INPUT', 'Y', 'N', 7, 'admin', NOW()),
|
||
('D', 'isSettle', '是否结算工资', '是否结算工资', 'SYSTEM', 'STRING', 'SELECT', 'Y', 'N', 8, 'admin', NOW()),
|
||
('D', 'wages', '结算工资', '结算工资', 'SYSTEM', 'NUMBER', 'NUMBER', 'Y', 'N', 9, 'admin', NOW());
|
||
|
||
-- E. 异常记录字段
|
||
INSERT INTO `pro_report_field_config` (`category_code`, `field_code`, `field_name`, `default_field_name`, `field_type`, `data_type`, `control_type`, `is_enabled`, `is_required`, `sort_order`, `create_by`, `create_time`) VALUES
|
||
('E', 'stationException', '工位异常情况', '工位异常情况', 'SYSTEM', 'STRING', 'TEXTAREA', 'Y', 'N', 1, 'admin', NOW()),
|
||
('E', 'rectificationSuggestion', '整改建议', '整改建议', 'SYSTEM', 'STRING', 'TEXTAREA', 'Y', 'N', 2, 'admin', NOW()),
|
||
('E', 'remark', '备注', '备注', 'SYSTEM', 'STRING', 'TEXTAREA', 'Y', 'N', 3, 'admin', NOW());
|
||
|
||
-- ============================================================
|
||
-- 6. 说明
|
||
-- ============================================================
|
||
-- 1. 类别配置表存储系统类别和自定义类别:
|
||
-- - category_type: SYSTEM=系统类别(A/B/C/D/E,不可删除),CUSTOM=自定义类别(F/G/H...,可删除)
|
||
-- - category_code: 系统类别固定为A/B/C/D/E,自定义类别按字母顺序生成F/G/H...
|
||
-- - category_name: 可自定义修改的显示名称
|
||
-- - default_category_name: 系统默认名称,用于重置
|
||
-- 2. 字段配置表存储每个类别下字段的配置信息:
|
||
-- - field_type: SYSTEM=系统字段(对应实体类字段),CUSTOM=自定义字段(存储在JSON中)
|
||
-- - field_code: 系统字段使用实体类字段名,自定义字段使用 custom_field_xxx
|
||
-- - field_name: 可自定义修改的显示名称
|
||
-- - default_field_name: 系统默认名称,用于重置
|
||
-- - data_type: 数据类型(STRING/NUMBER/DATE/DATETIME/BOOLEAN/SELECT)
|
||
-- - control_type: 控件类型(INPUT/NUMBER/DATE/DATETIME/SELECT/TEXTAREA/SWITCH)
|
||
-- - options: 下拉选项(JSON格式,仅SELECT类型有效)
|
||
-- - category_code: 所属类别编码,自定义字段可修改(移动到其他类别)
|
||
-- 3. 自定义字段的值存储在 pro_report.custom_fields(JSON类型)中
|
||
-- 4. 停用的类别在报工单表单中完全隐藏
|
||
-- 5. 停用的字段在报工单表单中完全隐藏
|
||
-- 6. 必填字段根据配置动态添加校验规则
|
||
-- 7. 配置仅影响新增/编辑时的表单显示,不影响已保存的报工单数据
|
||
-- 8. 新增自定义字段时可以选择放入任一类别中(包括自定义类别)
|
||
-- 9. 删除自定义类别前需确认该类别下没有字段
|
||
-- 10. 配置功能通过报工单页面的"表单配置"按钮打开弹窗进行设置,无需单独的配置菜单
|