新增原料入场记录的免密查询和删除功能,支持级联删除关联原材料卡片。重构相关服务和控制器以增强逻辑删除支持,优化数据处理流程,确保数据一致性和准确性。同时,更新前端表单以支持新功能。

This commit is contained in:
geht
2026-05-15 15:08:07 +08:00
parent b4b550a3de
commit 0c5e29044a
34 changed files with 1693 additions and 215 deletions

View File

@@ -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');

View File

@@ -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');

View File

@@ -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');

View File

@@ -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');