Merge branch 'main' into 生产基础资料
This commit is contained in:
@@ -39,7 +39,7 @@ public class JeecgSystemApplication extends SpringBootServletInitializer {
|
||||
SpringApplication app = new SpringApplication(JeecgSystemApplication.class);
|
||||
Map<String, Object> defaultProperties = new HashMap<>();
|
||||
defaultProperties.put("management.health.elasticsearch.enabled", false);
|
||||
app.setDefaultProperties(defaultProperties);
|
||||
app.setDefaultProperties(defaultProperties);
|
||||
log.info("[JEECG] Elasticsearch Health Check Enabled: false" );
|
||||
|
||||
ConfigurableApplicationContext application = app.run(args);;
|
||||
@@ -48,6 +48,7 @@ public class JeecgSystemApplication extends SpringBootServletInitializer {
|
||||
String port = env.getProperty("server.port");
|
||||
String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path"));
|
||||
log.info("\n----------------------------------------------------------\n\t" +
|
||||
|
||||
"Application Jeecg-Boot is running! Access URLs:\n\t" +
|
||||
"Local: \t\thttp://localhost:" + port + path + "\n\t" +
|
||||
"External: \thttp://" + ip + ":" + port + path + "/doc.html\n\t" +
|
||||
|
||||
@@ -2,6 +2,8 @@ spring:
|
||||
application:
|
||||
name: jeecg-system
|
||||
config:
|
||||
import: optional:classpath:config/application-liteflow.yml
|
||||
import:
|
||||
- optional:classpath:config/application-liteflow.yml
|
||||
- optional:classpath:config/application-xslmes-warehouse-area.yml
|
||||
profiles:
|
||||
active: '@profile.name@'
|
||||
@@ -0,0 +1,11 @@
|
||||
# MES XSL — 库区「实际存放量」兜底配置(不写库的可选 YAML)
|
||||
# 当前租户若在表 mes_xsl_warehouse_area_capacity_cfg 中已保存「匹配仓库」配置,则<strong>仅以库内配置为准</strong>,
|
||||
# 本文件的 codes/ids/enabled 仅在该租户尚无库内记录时作为兜底生效。
|
||||
xslmes:
|
||||
warehouse-area:
|
||||
display-actual-capacity:
|
||||
enabled: true
|
||||
raw-material-warehouse-category-codes:
|
||||
- XSLMES_WH_F1_YCL
|
||||
- XSLMES_WH_F2_YCL
|
||||
raw-material-warehouse-category-ids: []
|
||||
@@ -0,0 +1,45 @@
|
||||
-- 原材料库存:建表 + 菜单权限(幂等)
|
||||
|
||||
-- ===================== 1. 建表 =====================
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_raw_material_inventory` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`warehouse_name` varchar(200) DEFAULT NULL COMMENT '所在仓库',
|
||||
`material_name` varchar(200) DEFAULT NULL COMMENT '物料名称',
|
||||
`material_code` varchar(100) DEFAULT NULL COMMENT '物料编码',
|
||||
`test_result` varchar(10) DEFAULT NULL COMMENT '状态检验(字典 xslmes_test_result)',
|
||||
`total_packages` decimal(18,3) DEFAULT 0 COMMENT '总包数',
|
||||
`total_weight` decimal(18,3) DEFAULT 0 COMMENT '总重量',
|
||||
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`tenant_id` int DEFAULT 1002 COMMENT '租户ID',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_rmi_wh_mat_result` (`warehouse_name`, `material_code`, `test_result`),
|
||||
KEY `idx_rmi_material_code` (`material_code`),
|
||||
KEY `idx_rmi_test_result` (`test_result`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='原材料库存';
|
||||
|
||||
-- ===================== 2. 菜单权限 =====================
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000600', '1900000000000000300', '原材料库存', '/xslmes/mesXslRawMaterialInventory', 'xslmes/mesXslRawMaterialInventory/MesXslRawMaterialInventoryList', 1, NULL, NULL, 1, NULL, '0', 12.00, 0, 'ant-design:inbox-outlined', 0, 1, 0, 0, '原材料库存', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000600');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000601', '1900000000000000600', '导出', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mes_xsl_raw_material_inventory:exportXls', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000601');
|
||||
|
||||
-- 默认管理员角色授权
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), 'f6817f48af4fb3af11b9e8bf182f618b', '1900000000000000600', NULL, NOW(), '127.0.0.1'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_role_permission`
|
||||
WHERE `role_id` = 'f6817f48af4fb3af11b9e8bf182f618b' AND `permission_id` = '1900000000000000600'
|
||||
);
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), 'f6817f48af4fb3af11b9e8bf182f618b', '1900000000000000601', NULL, NOW(), '127.0.0.1'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_role_permission`
|
||||
WHERE `role_id` = 'f6817f48af4fb3af11b9e8bf182f618b' AND `permission_id` = '1900000000000000601'
|
||||
);
|
||||
@@ -0,0 +1,43 @@
|
||||
-- 业务与打印模板绑定(字段映射可视化配置)
|
||||
CREATE TABLE IF NOT EXISTS `print_biz_template_bind` (
|
||||
`id` varchar(36) NOT NULL COMMENT '主键',
|
||||
`biz_code` varchar(64) NOT NULL COMMENT '业务编码(如 MES_RAW_MATERIAL_CARD)',
|
||||
`biz_name` varchar(128) DEFAULT NULL COMMENT '业务名称(冗余展示)',
|
||||
`template_id` varchar(36) NOT NULL COMMENT '打印模板主键',
|
||||
`template_code` varchar(64) NOT NULL COMMENT '打印模板编码(冗余,便于调用方查询)',
|
||||
`field_mapping_json` longtext COMMENT '字段映射 JSON:[{templateField,bizField}],templateField 对应模板 bindField',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_print_biz_template_bind_biz` (`biz_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='业务打印模板绑定';
|
||||
|
||||
-- 菜单:打印管理下「业务打印绑定」
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000120', '1900000000000000100', '业务打印绑定', '/print/bizTemplateBind', 'print/bizTemplateBind/index', 1, 'PrintBizTemplateBind', NULL, 1, NULL, '0', 3.00, 0, 'ant-design:link-outlined', 1, 1, 0, 0, '业务与打印模板、字段映射配置', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000120');
|
||||
|
||||
-- 按钮权限
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000121', '1900000000000000120', '业务打印绑定-查询', NULL, NULL, 0, NULL, NULL, 2, 'print:bizBind:list', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000121');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000122', '1900000000000000120', '业务打印绑定-添加', NULL, NULL, 0, NULL, NULL, 2, 'print:bizBind:add', '1', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000122');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000123', '1900000000000000120', '业务打印绑定-编辑', NULL, NULL, 0, NULL, NULL, 2, 'print:bizBind:edit', '1', 3.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000123');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000124', '1900000000000000120', '业务打印绑定-删除', NULL, NULL, 0, NULL, NULL, 2, 'print:bizBind:delete', '1', 4.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000124');
|
||||
@@ -0,0 +1,53 @@
|
||||
-- 原材料库存:改为保存物料ID(关联 mes_mixer_material.id),并调整唯一键口径
|
||||
|
||||
-- 1) 新增 material_id 字段(若不存在)
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND COLUMN_NAME = 'material_id'
|
||||
);
|
||||
SET @ddl := IF(@col_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD COLUMN `material_id` varchar(32) DEFAULT NULL COMMENT ''物料ID(关联 mes_mixer_material.id)'' AFTER `warehouse_name`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s1 FROM @ddl; EXECUTE s1; DEALLOCATE PREPARE s1;
|
||||
|
||||
-- 2) 删除旧唯一键(若存在)
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wh_mat_result'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists > 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` DROP INDEX `uk_rmi_wh_mat_result`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s2 FROM @ddl; EXECUTE s2; DEALLOCATE PREPARE s2;
|
||||
|
||||
-- 3) 新唯一键:所在仓库 + 物料ID + 状态检验
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wh_mid_result'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD UNIQUE KEY `uk_rmi_wh_mid_result` (`warehouse_name`, `material_id`, `test_result`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s3 FROM @ddl; EXECUTE s3; DEALLOCATE PREPARE s3;
|
||||
|
||||
-- 4) 查询索引:material_id
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'idx_rmi_material_id'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD KEY `idx_rmi_material_id` (`material_id`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s4 FROM @ddl; EXECUTE s4; DEALLOCATE PREPARE s4;
|
||||
@@ -0,0 +1,11 @@
|
||||
-- 打印业务可选范围:白名单(勾选 sys_permission.id,对应 PrintBizTypeCatalog 中 linkedPermissionId)
|
||||
CREATE TABLE IF NOT EXISTS `print_biz_bind_perm_whitelist` (
|
||||
`perm_id` varchar(36) NOT NULL COMMENT 'sys_permission 主键(菜单/功能)',
|
||||
PRIMARY KEY (`perm_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='业务打印绑定-可选业务白名单(权限菜单)';
|
||||
|
||||
-- 按钮:打印业务白名单
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000125', '1900000000000000120', '打印业务白名单', NULL, NULL, 0, NULL, NULL, 2, 'print:bizBind:whitelist', '1', 5.00, 0, NULL, 1, 0, 0, 0, '配置哪些菜单关联的打印业务可出现在「新增业务打印绑定」中', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000125');
|
||||
@@ -0,0 +1,72 @@
|
||||
-- 原材料库存:历史数据回填 material_id(按 material_code 关联 mes_mixer_material)
|
||||
-- 处理策略:
|
||||
-- 1) 对 material_id 为空且可按编码匹配的库存行,先聚合后写入(遇唯一键冲突自动累加)
|
||||
-- 2) 删除已迁移的旧空 material_id 行,避免重复数据
|
||||
-- 3) 对已有 material_id 但编码/名称为空的数据做展示字段补齐
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS `tmp_rmi_backfill`;
|
||||
CREATE TEMPORARY TABLE `tmp_rmi_backfill` AS
|
||||
SELECT
|
||||
i.warehouse_name,
|
||||
m.id AS material_id,
|
||||
i.test_result,
|
||||
MAX(COALESCE(NULLIF(i.material_code, ''), m.material_code)) AS material_code,
|
||||
MAX(COALESCE(NULLIF(i.material_name, ''), m.material_name)) AS material_name,
|
||||
SUM(IFNULL(i.total_packages, 0)) AS total_packages,
|
||||
SUM(IFNULL(i.total_weight, 0)) AS total_weight,
|
||||
MAX(i.tenant_id) AS tenant_id
|
||||
FROM mes_xsl_raw_material_inventory i
|
||||
INNER JOIN mes_mixer_material m
|
||||
ON m.material_code = i.material_code
|
||||
AND (m.del_flag = 0 OR m.del_flag IS NULL)
|
||||
WHERE (i.material_id IS NULL OR i.material_id = '')
|
||||
AND i.material_code IS NOT NULL
|
||||
AND i.material_code <> ''
|
||||
GROUP BY i.warehouse_name, m.id, i.test_result;
|
||||
|
||||
INSERT INTO mes_xsl_raw_material_inventory
|
||||
(`id`, `warehouse_name`, `material_id`, `material_name`, `material_code`, `test_result`, `total_packages`, `total_weight`, `create_by`, `create_time`, `update_by`, `update_time`, `tenant_id`)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''),
|
||||
t.warehouse_name,
|
||||
t.material_id,
|
||||
t.material_name,
|
||||
t.material_code,
|
||||
t.test_result,
|
||||
t.total_packages,
|
||||
t.total_weight,
|
||||
'admin',
|
||||
NOW(),
|
||||
'admin',
|
||||
NOW(),
|
||||
IFNULL(t.tenant_id, 1002)
|
||||
FROM tmp_rmi_backfill t
|
||||
ON DUPLICATE KEY UPDATE
|
||||
total_packages = IFNULL(total_packages, 0) + VALUES(total_packages),
|
||||
total_weight = IFNULL(total_weight, 0) + VALUES(total_weight),
|
||||
material_code = CASE WHEN material_code IS NULL OR material_code = '' THEN VALUES(material_code) ELSE material_code END,
|
||||
material_name = CASE WHEN material_name IS NULL OR material_name = '' THEN VALUES(material_name) ELSE material_name END,
|
||||
update_by = 'admin',
|
||||
update_time = NOW();
|
||||
|
||||
DELETE i
|
||||
FROM mes_xsl_raw_material_inventory i
|
||||
INNER JOIN mes_mixer_material m
|
||||
ON m.material_code = i.material_code
|
||||
AND (m.del_flag = 0 OR m.del_flag IS NULL)
|
||||
WHERE (i.material_id IS NULL OR i.material_id = '')
|
||||
AND i.material_code IS NOT NULL
|
||||
AND i.material_code <> '';
|
||||
|
||||
UPDATE mes_xsl_raw_material_inventory i
|
||||
INNER JOIN mes_mixer_material m
|
||||
ON m.id = i.material_id
|
||||
AND (m.del_flag = 0 OR m.del_flag IS NULL)
|
||||
SET
|
||||
i.material_code = CASE WHEN i.material_code IS NULL OR i.material_code = '' THEN m.material_code ELSE i.material_code END,
|
||||
i.material_name = CASE WHEN i.material_name IS NULL OR i.material_name = '' THEN m.material_name ELSE i.material_name END,
|
||||
i.update_by = 'admin',
|
||||
i.update_time = NOW()
|
||||
WHERE (i.material_code IS NULL OR i.material_code = '' OR i.material_name IS NULL OR i.material_name = '');
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS `tmp_rmi_backfill`;
|
||||
@@ -0,0 +1,17 @@
|
||||
-- 菜单权限与打印业务实体类映射(biz_code / 绑定表业务编码 = perm_id)
|
||||
CREATE TABLE IF NOT EXISTS `print_biz_perm_entity` (
|
||||
`perm_id` varchar(36) NOT NULL COMMENT 'sys_permission.id',
|
||||
`entity_class` varchar(512) NOT NULL COMMENT '实体类全限定名(用于反射字段)',
|
||||
PRIMARY KEY (`perm_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印业务-菜单与实体映射';
|
||||
|
||||
-- 原材料卡片菜单 -> MesXslRawMaterialCard
|
||||
INSERT INTO `print_biz_perm_entity` (`perm_id`, `entity_class`)
|
||||
SELECT '1900000000000000540', 'org.jeecg.modules.xslmes.entity.MesXslRawMaterialCard'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `print_biz_perm_entity` WHERE `perm_id` = '1900000000000000540');
|
||||
|
||||
-- 历史绑定:业务编码由语义码改为菜单 id(与白名单、映射表一致)
|
||||
UPDATE `print_biz_template_bind`
|
||||
SET `biz_code` = '1900000000000000540'
|
||||
WHERE `biz_code` = 'MES_RAW_MATERIAL_CARD';
|
||||
@@ -0,0 +1,63 @@
|
||||
-- 原材料库存:改为保存 warehouse_id(关联 mes_xsl_warehouse.id),并调整唯一键口径
|
||||
|
||||
-- 1) 新增 warehouse_id 字段(若不存在)
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND COLUMN_NAME = 'warehouse_id'
|
||||
);
|
||||
SET @ddl := IF(@col_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD COLUMN `warehouse_id` varchar(32) DEFAULT NULL COMMENT ''所在仓库ID(关联 mes_xsl_warehouse.id)'' AFTER `warehouse_name`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s1 FROM @ddl; EXECUTE s1; DEALLOCATE PREPARE s1;
|
||||
|
||||
-- 2) 回填 warehouse_id(按仓库名称关联)
|
||||
UPDATE mes_xsl_raw_material_inventory i
|
||||
INNER JOIN mes_xsl_warehouse w
|
||||
ON w.warehouse_name = i.warehouse_name
|
||||
AND (w.del_flag = 0 OR w.del_flag IS NULL)
|
||||
SET i.warehouse_id = w.id
|
||||
WHERE (i.warehouse_id IS NULL OR i.warehouse_id = '')
|
||||
AND i.warehouse_name IS NOT NULL
|
||||
AND i.warehouse_name <> '';
|
||||
|
||||
-- 3) 删除旧唯一键(若存在)
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wh_mid_result'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists > 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` DROP INDEX `uk_rmi_wh_mid_result`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s2 FROM @ddl; EXECUTE s2; DEALLOCATE PREPARE s2;
|
||||
|
||||
-- 4) 新唯一键:仓库ID + 物料ID + 状态检验
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wid_mid_result'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD UNIQUE KEY `uk_rmi_wid_mid_result` (`warehouse_id`, `material_id`, `test_result`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s3 FROM @ddl; EXECUTE s3; DEALLOCATE PREPARE s3;
|
||||
|
||||
-- 5) 查询索引:warehouse_id
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'idx_rmi_warehouse_id'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD KEY `idx_rmi_warehouse_id` (`warehouse_id`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s4 FROM @ddl; EXECUTE s4; DEALLOCATE PREPARE s4;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- 允许 entity_class 为空:白名单勾选的菜单优先落库占位,无法按 component 推断时再手工补全
|
||||
ALTER TABLE `print_biz_perm_entity`
|
||||
MODIFY COLUMN `entity_class` varchar(512) NULL COMMENT '实体类全限定名;为空表示仅勾选占位,需手工配置或菜单不符合推断规则';
|
||||
@@ -0,0 +1,35 @@
|
||||
-- 业务实体字段缓存表:供「业务打印绑定」下拉读取;数据由启动任务根据 print_biz_perm_entity 异步扫描写入
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_biz_entity_field_profile` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`business_name` varchar(200) NOT NULL COMMENT '业务名称',
|
||||
`business_code` varchar(64) NOT NULL COMMENT '业务编码(菜单 permission id,与 print 绑定 biz_code 一致)',
|
||||
`entity_class_name` varchar(512) DEFAULT NULL COMMENT '主实体 Java 全限定类名',
|
||||
`main_fields_json` text COMMENT '主表字段列表 JSON(PrintBizFieldItemVO 数组)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`tenant_id` int DEFAULT NULL COMMENT '租户ID',
|
||||
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_mxbefp_bcode` (`business_code`),
|
||||
KEY `idx_mxbefp_tenant` (`tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES业务实体字段配置-主表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_biz_entity_field_detail` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`profile_id` varchar(32) NOT NULL COMMENT '主表ID',
|
||||
`detail_property_name` varchar(128) DEFAULT NULL COMMENT '主实体明细属性名(如 lines,与打印绑定 detailProperty 一致)',
|
||||
`detail_slot_kind` varchar(16) DEFAULT NULL COMMENT 'LIST 或 OBJECT',
|
||||
`detail_name` varchar(200) DEFAULT NULL COMMENT '明细展示名称',
|
||||
`detail_entity_class_name` varchar(512) DEFAULT NULL COMMENT '明细元素类型全限定名',
|
||||
`detail_fields_json` text COMMENT '明细元素类字段列表 JSON(无前缀,PrintBizFieldItemVO 数组)',
|
||||
`sort_no` int DEFAULT NULL COMMENT '排序号',
|
||||
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_mxbefd_profile` (`profile_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES业务实体字段配置-明细槽位字段清单';
|
||||
@@ -0,0 +1,86 @@
|
||||
-- 原材料库存:按「所属仓库 + 物料」唯一,数量/重量累计
|
||||
-- 处理内容:
|
||||
-- 1) 删除旧唯一键(含 test_result 维度)
|
||||
-- 2) 合并历史重复行(同仓库同物料累计 total_packages/total_weight)
|
||||
-- 3) 新建唯一键:warehouse_id + material_id
|
||||
|
||||
-- 1) 删除旧唯一键(若存在)
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wid_mid_result'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists > 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` DROP INDEX `uk_rmi_wid_mid_result`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s1 FROM @ddl; EXECUTE s1; DEALLOCATE PREPARE s1;
|
||||
|
||||
-- 兼容旧脚本里的唯一键名
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wh_mid_result'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists > 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` DROP INDEX `uk_rmi_wh_mid_result`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s2 FROM @ddl; EXECUTE s2; DEALLOCATE PREPARE s2;
|
||||
|
||||
-- 2) 合并历史数据
|
||||
DROP TEMPORARY TABLE IF EXISTS `tmp_rmi_merge`;
|
||||
CREATE TEMPORARY TABLE `tmp_rmi_merge` AS
|
||||
SELECT
|
||||
-- 用空串承载未回填ID,避免唯一键上的 NULL 语义导致重复
|
||||
COALESCE(NULLIF(MAX(NULLIF(warehouse_id, '')), ''), '') AS warehouse_id,
|
||||
COALESCE(NULLIF(MAX(NULLIF(material_id, '')), ''), '') AS material_id,
|
||||
MAX(COALESCE(NULLIF(warehouse_name, ''), '')) AS warehouse_name,
|
||||
MAX(COALESCE(NULLIF(material_code, ''), '')) AS material_code,
|
||||
MAX(COALESCE(NULLIF(material_name, ''), '')) AS material_name,
|
||||
MAX(COALESCE(NULLIF(test_result, ''), '')) AS test_result,
|
||||
SUM(IFNULL(total_packages, 0)) AS total_packages,
|
||||
SUM(IFNULL(total_weight, 0)) AS total_weight,
|
||||
MAX(tenant_id) AS tenant_id
|
||||
FROM mes_xsl_raw_material_inventory
|
||||
GROUP BY
|
||||
COALESCE(NULLIF(warehouse_id, ''), CONCAT('NAME:', IFNULL(warehouse_name, ''))),
|
||||
COALESCE(NULLIF(material_id, ''), CONCAT('CODE:', IFNULL(material_code, '')));
|
||||
|
||||
TRUNCATE TABLE mes_xsl_raw_material_inventory;
|
||||
|
||||
INSERT INTO mes_xsl_raw_material_inventory
|
||||
(`id`, `warehouse_name`, `warehouse_id`, `material_id`, `material_name`, `material_code`, `test_result`, `total_packages`, `total_weight`, `create_by`, `create_time`, `update_by`, `update_time`, `tenant_id`)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''),
|
||||
warehouse_name,
|
||||
warehouse_id,
|
||||
material_id,
|
||||
material_name,
|
||||
material_code,
|
||||
test_result,
|
||||
total_packages,
|
||||
total_weight,
|
||||
'admin',
|
||||
NOW(),
|
||||
'admin',
|
||||
NOW(),
|
||||
IFNULL(tenant_id, 1002)
|
||||
FROM tmp_rmi_merge;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS `tmp_rmi_merge`;
|
||||
|
||||
-- 3) 新唯一键:warehouse_id + material_id
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_inventory'
|
||||
AND INDEX_NAME = 'uk_rmi_wid_mid'
|
||||
);
|
||||
SET @ddl := IF(@idx_exists = 0,
|
||||
'ALTER TABLE `mes_xsl_raw_material_inventory` ADD UNIQUE KEY `uk_rmi_wid_mid` (`warehouse_id`, `material_id`)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE s3 FROM @ddl; EXECUTE s3; DEALLOCATE PREPARE s3;
|
||||
@@ -0,0 +1,25 @@
|
||||
-- 旧库升级:明细表若早于完整脚本创建,可能缺少 detail_property_name / detail_slot_kind(兼容 MySQL 5.7+)
|
||||
|
||||
SELECT COUNT(*) INTO @jeecg_chk_dpn FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_biz_entity_field_detail'
|
||||
AND COLUMN_NAME = 'detail_property_name';
|
||||
|
||||
SET @jeecg_sql_dpn := IF(@jeecg_chk_dpn = 0,
|
||||
'ALTER TABLE mes_xsl_biz_entity_field_detail ADD COLUMN detail_property_name varchar(128) DEFAULT NULL COMMENT ''主实体明细属性名(与打印绑定 detailProperty 一致)'' AFTER profile_id',
|
||||
'SELECT 1');
|
||||
PREPARE jeecg_stmt_dpn FROM @jeecg_sql_dpn;
|
||||
EXECUTE jeecg_stmt_dpn;
|
||||
DEALLOCATE PREPARE jeecg_stmt_dpn;
|
||||
|
||||
SELECT COUNT(*) INTO @jeecg_chk_dsk FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_biz_entity_field_detail'
|
||||
AND COLUMN_NAME = 'detail_slot_kind';
|
||||
|
||||
SET @jeecg_sql_dsk := IF(@jeecg_chk_dsk = 0,
|
||||
'ALTER TABLE mes_xsl_biz_entity_field_detail ADD COLUMN detail_slot_kind varchar(16) DEFAULT NULL COMMENT ''LIST 或 OBJECT'' AFTER detail_property_name',
|
||||
'SELECT 1');
|
||||
PREPARE jeecg_stmt_dsk FROM @jeecg_sql_dsk;
|
||||
EXECUTE jeecg_stmt_dsk;
|
||||
DEALLOCATE PREPARE jeecg_stmt_dsk;
|
||||
@@ -0,0 +1,19 @@
|
||||
-- 原材料库区看板:菜单与查询权限(父菜单 MES XSL 1900000000000000300)
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000580', '1900000000000000300', '原材料库区看板', '/xslmes/mesXslRawMaterialWarehouseBoard', 'xslmes/mesXslRawMaterialWarehouseBoard/MesXslRawMaterialWarehouseBoard', 1, NULL, NULL, 1, NULL, '0', 12.50, 0, 'ant-design:layout-outlined', 0, 1, 0, 0, '按库区聚合展示原材料卡片库存', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000580');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000581', '1900000000000000580', '查询', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mes_xsl_raw_material_warehouse_board:list', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000581');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000580', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000580');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000581', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000581');
|
||||
@@ -0,0 +1,26 @@
|
||||
-- 库区「实际存放量」回填规则:按租户页面配置(原材料卡片汇总所匹配的仓库分类)
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_warehouse_area_capacity_cfg` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`enabled` tinyint NOT NULL DEFAULT 1 COMMENT '是否启用回填 0否 1是',
|
||||
`warehouse_category_ids` varchar(2000) DEFAULT NULL COMMENT 'MES仓库分类(sys_category.id),逗号分隔',
|
||||
`warehouse_category_codes` varchar(2000) DEFAULT NULL COMMENT 'MES仓库分类编码,逗号分隔,与 IDs 合并解析',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`tenant_id` int DEFAULT NULL COMMENT '租户ID',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_xsl_wacc_tenant` (`tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES库区实际存放量回填规则(租户)';
|
||||
|
||||
-- 按钮权限:匹配仓库
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000558', '1900000000000000550', '匹配仓库', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mes_xsl_warehouse_area:capacityMatch', '1', 8.00, 0, NULL, 1, 0, 0, 0, '配置实际存放量按原材料卡片汇总的仓库分类', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000558');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000558', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000558');
|
||||
@@ -0,0 +1,11 @@
|
||||
-- 一级菜单:MES原料仓储(目录;默认重定向至已有原材料库区看板)
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000700', '', 'MES原料仓储', '/xslmesRawStorage', 'layouts/default/index', 1, NULL, '/xslmes/mesXslRawMaterialWarehouseBoard', 0, NULL, '0', 81.50, 0, 'ant-design:inbox-outlined', 0, 0, 0, 0, 'MES 原料仓储(一级目录,子菜单可后续挂接或从系统管理中调整)', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000700');
|
||||
|
||||
-- admin 角色授权(幂等)
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000700', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000700');
|
||||
@@ -0,0 +1,17 @@
|
||||
-- PrintDot WebSocket 地址字典(item_text 展示名称,item_value 为完整 ws 地址,可在系统字典中维护多条)
|
||||
|
||||
INSERT INTO `sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `type`, `tenant_id`)
|
||||
SELECT REPLACE(UUID(), '-', ''), 'PrintDot WS地址', 'xslmes_print_dot_ws', '原材料卡片等页面桥接器 WebSocket 地址;文本为说明,值为完整 ws URL', 0, 'admin', NOW(), 0, 1002
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_dict` WHERE `dict_code` = 'xslmes_print_dot_ws' AND `del_flag` = 0);
|
||||
|
||||
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`)
|
||||
SELECT REPLACE(UUID(), '-', ''), d.id, '本机 PrintDot', 'ws://127.0.0.1:1122/ws', '本机默认端口', 1, 1, 'admin', NOW()
|
||||
FROM `sys_dict` d
|
||||
WHERE d.`dict_code` = 'xslmes_print_dot_ws'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = 'ws://127.0.0.1:1122/ws');
|
||||
|
||||
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`)
|
||||
SELECT REPLACE(UUID(), '-', ''), d.id, '本机(备用回环)', 'ws://localhost:1122/ws', '与 127.0.0.1 等价场景', 2, 1, 'admin', NOW()
|
||||
FROM `sys_dict` d
|
||||
WHERE d.`dict_code` = 'xslmes_print_dot_ws'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = 'ws://localhost:1122/ws');
|
||||
@@ -0,0 +1,53 @@
|
||||
-- 原材料卡片修改日志:表 + 菜单(挂到「MES原料仓储」1900000000000000700 下)
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mes_xsl_raw_material_card_edit_log` (
|
||||
`id` varchar(32) NOT NULL COMMENT '主键',
|
||||
`card_id` varchar(32) NOT NULL COMMENT '原材料卡片ID',
|
||||
`barcode` varchar(100) DEFAULT NULL COMMENT '条码',
|
||||
`batch_no` varchar(100) DEFAULT NULL COMMENT '批次号',
|
||||
`material_name` varchar(200) DEFAULT NULL COMMENT '物料名称',
|
||||
`material_id` varchar(32) DEFAULT NULL COMMENT '物料ID',
|
||||
`before_remaining_weight` decimal(12,3) DEFAULT NULL COMMENT '修改前剩余重量',
|
||||
`before_remaining_qty` int DEFAULT NULL COMMENT '修改前剩余数量',
|
||||
`after_remaining_weight` decimal(12,3) DEFAULT NULL COMMENT '修改后剩余重量',
|
||||
`before_warehouse_area` varchar(100) DEFAULT NULL COMMENT '修改前库区',
|
||||
`after_remaining_qty` int DEFAULT NULL COMMENT '修改后剩余数量',
|
||||
`after_warehouse_area` varchar(100) DEFAULT NULL COMMENT '修改后库区',
|
||||
`modify_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`modify_by_name` varchar(100) DEFAULT NULL COMMENT '修改人姓名',
|
||||
`tenant_id` int DEFAULT NULL COMMENT '租户ID',
|
||||
`data_source` varchar(100) DEFAULT NULL COMMENT '数值来源(Web端/桌面端等)',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_rmcel_card_id` (`card_id`),
|
||||
KEY `idx_rmcel_barcode` (`barcode`),
|
||||
KEY `idx_rmcel_modify` (`modify_time`),
|
||||
KEY `idx_rmcel_tenant` (`tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='原材料卡片修改日志';
|
||||
|
||||
-- 菜单
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000710', '1900000000000000700', '原材料卡片修改日志', '/xslmes/mesXslRawMaterialCardEditLog', 'xslmes/mesXslRawMaterialCardEditLog/MesXslRawMaterialCardEditLogList', 1, NULL, NULL, 1, NULL, '0', 13.00, 0, 'ant-design:history-outlined', 0, 1, 0, 0, '记录 Web/桌面端编辑原材料卡片剩余量与库区', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000710');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000711', '1900000000000000710', '查询', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mes_xsl_raw_material_card_edit_log:list', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000711');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000712', '1900000000000000710', '导出', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mes_xsl_raw_material_card_edit_log:exportXls', '1', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000712');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000710', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000710');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000711', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000711');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000712', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000712');
|
||||
@@ -0,0 +1,45 @@
|
||||
-- 原料入场记录:逻辑删除字段 + 「原料入场删除日志」只读菜单(MES原料仓储下)
|
||||
-- 说明:删除改为逻辑删除(del_flag=1),本页面仅查询已删除记录展示,不另建日志表。
|
||||
|
||||
SET @col_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_entry'
|
||||
AND COLUMN_NAME = 'del_flag'
|
||||
);
|
||||
SET @ddl := IF(@col_exists > 0,
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `mes_xsl_raw_material_entry` ADD COLUMN `del_flag` int NOT NULL DEFAULT 0 COMMENT ''逻辑删除(0正常 1已删除)'' AFTER `tenant_id`'
|
||||
);
|
||||
PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
|
||||
|
||||
SET @idx_exists := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'mes_xsl_raw_material_entry'
|
||||
AND INDEX_NAME = 'idx_rme_del_flag'
|
||||
);
|
||||
SET @idx_ddl := IF(@idx_exists > 0,
|
||||
'SELECT 1',
|
||||
'ALTER TABLE `mes_xsl_raw_material_entry` ADD KEY `idx_rme_del_flag` (`del_flag`)'
|
||||
);
|
||||
PREPARE s2 FROM @idx_ddl; EXECUTE s2; DEALLOCATE PREPARE s2;
|
||||
|
||||
-- 菜单
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000720', '1900000000000000700', '原料入场删除日志', '/xslmes/mesXslRawMaterialEntryDeleteLog', 'xslmes/mesXslRawMaterialEntryDeleteLog/MesXslRawMaterialEntryDeleteLogList', 1, NULL, NULL, 1, NULL, '0', 14.00, 0, 'ant-design:delete-row-outlined', 0, 1, 0, 0, '查询已逻辑删除的原料入场记录(仅展示条码/批次/创建人/时间/物料名称)', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000720');
|
||||
|
||||
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
|
||||
SELECT '1900000000000000721', '1900000000000000720', '查询', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mes_xsl_raw_material_entry_delete_log:list', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000721');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000720', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000720');
|
||||
|
||||
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
|
||||
SELECT REPLACE(UUID(), '-', ''), r.id, '1900000000000000721', NULL, NOW(), '127.0.0.1'
|
||||
FROM `sys_role` r WHERE r.`role_code` = 'admin'
|
||||
AND NOT EXISTS (SELECT 1 FROM `sys_role_permission` rp WHERE rp.`role_id` = r.id AND rp.`permission_id` = '1900000000000000721');
|
||||
Reference in New Issue
Block a user