优化密炼物料管理功能,新增物料类型选择和显示逻辑,确保在保存和编辑称重记录时自动设置默认物料类型。更新前端表单以提升用户体验,并增强系统的实时数据同步能力。

This commit is contained in:
geht
2026-05-09 10:53:28 +08:00
parent f60a4fb203
commit 64e978a618
2 changed files with 165 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
-- 原料入场记录字段修正字段类型调整 + 字典新增/更新幂等
-- ===================== 1. 字段类型修正 =====================
-- stock_balance: decimal varchar(2)/否字典
SET @col1 := (SELECT DATA_TYPE FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mes_xsl_raw_material_entry' AND COLUMN_NAME = 'stock_balance');
SET @ddl1 := IF(@col1 != 'varchar',
'ALTER TABLE `mes_xsl_raw_material_entry` MODIFY COLUMN `stock_balance` varchar(2) DEFAULT NULL COMMENT ''入库结存字典 yn1是 0否''',
'SELECT 1');
PREPARE s1 FROM @ddl1; EXECUTE s1; DEALLOCATE PREPARE s1;
-- test_result: text varchar(10)检测结果字典
SET @col2 := (SELECT COLUMN_TYPE FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mes_xsl_raw_material_entry' AND COLUMN_NAME = 'test_result');
SET @ddl2 := IF(@col2 = 'text',
'ALTER TABLE `mes_xsl_raw_material_entry` MODIFY COLUMN `test_result` varchar(10) DEFAULT NULL COMMENT ''检测结果字典 xslmes_test_result0未检 1合格 2不合格''',
'SELECT 1');
PREPARE s2 FROM @ddl2; EXECUTE s2; DEALLOCATE PREPARE s2;
-- print_flag: varchar(2) varchar(10)打印标记字典
SET @col3 := (SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mes_xsl_raw_material_entry' AND COLUMN_NAME = 'print_flag');
SET @ddl3 := IF(@col3 < 10,
'ALTER TABLE `mes_xsl_raw_material_entry` MODIFY COLUMN `print_flag` varchar(10) DEFAULT NULL COMMENT ''打印标记字典 xslmes_print_flag1已打印 0未打印''',
'SELECT 1');
PREPARE s3 FROM @ddl3; EXECUTE s3; DEALLOCATE PREPARE s3;
-- ===================== 2. 检测结果字典新增=====================
INSERT INTO `sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `type`, `tenant_id`)
SELECT REPLACE(UUID(), '-', ''), 'MES检测结果', 'xslmes_test_result', '原料入场检测结果未检/合格/不合格', 0, 'admin', NOW(), 0, 1002
WHERE NOT EXISTS (SELECT 1 FROM `sys_dict` WHERE `dict_code` = 'xslmes_test_result' AND `del_flag` = 0);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '未检', '0', 1, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_result'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '0');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '合格', '1', 2, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_result'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '1');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '不合格', '2', 3, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_result'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '2');
-- ===================== 3. 检测状态字典更新为送样/已批准=====================
-- 删除旧值插入新值
DELETE i FROM `sys_dict_item` i
INNER JOIN `sys_dict` d ON d.id = i.dict_id
WHERE d.`dict_code` = 'xslmes_test_status'
AND i.`item_value` IN ('0', '1', '2');
UPDATE `sys_dict` SET `description` = '原料入场检测状态送样/已批准'
WHERE `dict_code` = 'xslmes_test_status' AND `del_flag` = 0;
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '送样', '0', 1, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_status'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '0');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '已批准', '1', 2, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_status'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '1');
-- ===================== 4. 打印标记字典新增=====================
INSERT INTO `sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `type`, `tenant_id`)
SELECT REPLACE(UUID(), '-', ''), 'MES打印标记', 'xslmes_print_flag', '原料入场打印标记已打印/未打印', 0, 'admin', NOW(), 0, 1002
WHERE NOT EXISTS (SELECT 1 FROM `sys_dict` WHERE `dict_code` = 'xslmes_print_flag' AND `del_flag` = 0);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '已打印', '1', 1, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_print_flag'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '1');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '未打印', '0', 2, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_print_flag'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '0');

View File

@@ -0,0 +1,84 @@
-- 修复 V40 stock_balance decimalvarchar(2) 因数据截断失败的问题
-- decimal 类型的 '0.00' 转字符串为 4 超出 varchar(2) 限制
-- 解决方案先清空 decimal 数据 ALTER其余 V40 步骤幂等重跑
-- ===================== 1. 清空 stock_balance 中无效的 decimal =====================
UPDATE `mes_xsl_raw_material_entry` SET `stock_balance` = NULL;
-- ===================== 2. stock_balance: decimal varchar(2) =====================
SET @col1 := (SELECT DATA_TYPE FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mes_xsl_raw_material_entry' AND COLUMN_NAME = 'stock_balance');
SET @ddl1 := IF(@col1 != 'varchar',
'ALTER TABLE `mes_xsl_raw_material_entry` MODIFY COLUMN `stock_balance` varchar(2) DEFAULT NULL COMMENT ''入库结存字典 yn1是 0否''',
'SELECT 1');
PREPARE s1 FROM @ddl1; EXECUTE s1; DEALLOCATE PREPARE s1;
-- ===================== 3. test_result: text varchar(10) =====================
SET @col2 := (SELECT COLUMN_TYPE FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mes_xsl_raw_material_entry' AND COLUMN_NAME = 'test_result');
SET @ddl2 := IF(@col2 = 'text',
'ALTER TABLE `mes_xsl_raw_material_entry` MODIFY COLUMN `test_result` varchar(10) DEFAULT NULL COMMENT ''检测结果字典 xslmes_test_result0未检 1合格 2不合格''',
'SELECT 1');
PREPARE s2 FROM @ddl2; EXECUTE s2; DEALLOCATE PREPARE s2;
-- ===================== 4. print_flag: varchar(2) varchar(10) =====================
SET @col3 := (SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'mes_xsl_raw_material_entry' AND COLUMN_NAME = 'print_flag');
SET @ddl3 := IF(@col3 IS NOT NULL AND @col3 < 10,
'ALTER TABLE `mes_xsl_raw_material_entry` MODIFY COLUMN `print_flag` varchar(10) DEFAULT NULL COMMENT ''打印标记字典 xslmes_print_flag1已打印 0未打印''',
'SELECT 1');
PREPARE s3 FROM @ddl3; EXECUTE s3; DEALLOCATE PREPARE s3;
-- ===================== 5. xslmes_test_result 字典幂等=====================
INSERT INTO `sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `type`, `tenant_id`)
SELECT REPLACE(UUID(), '-', ''), 'MES检测结果', 'xslmes_test_result', '原料入场检测结果未检/合格/不合格', 0, 'admin', NOW(), 0, 1002
WHERE NOT EXISTS (SELECT 1 FROM `sys_dict` WHERE `dict_code` = 'xslmes_test_result' AND `del_flag` = 0);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '未检', '0', 1, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_result'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '0');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '合格', '1', 2, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_result'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '1');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '不合格', '2', 3, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_result'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '2');
-- ===================== 6. xslmes_test_status 字典更新送样/已批准幂等=====================
DELETE i FROM `sys_dict_item` i
INNER JOIN `sys_dict` d ON d.id = i.dict_id
WHERE d.`dict_code` = 'xslmes_test_status'
AND i.`item_value` IN ('0', '1', '2');
UPDATE `sys_dict` SET `description` = '原料入场检测状态送样/已批准'
WHERE `dict_code` = 'xslmes_test_status' AND `del_flag` = 0;
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '送样', '0', 1, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_status'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '0');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '已批准', '1', 2, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_test_status'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '1');
-- ===================== 7. xslmes_print_flag 字典幂等=====================
INSERT INTO `sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `type`, `tenant_id`)
SELECT REPLACE(UUID(), '-', ''), 'MES打印标记', 'xslmes_print_flag', '原料入场打印标记已打印/未打印', 0, 'admin', NOW(), 0, 1002
WHERE NOT EXISTS (SELECT 1 FROM `sys_dict` WHERE `dict_code` = 'xslmes_print_flag' AND `del_flag` = 0);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '已打印', '1', 1, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_print_flag'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '1');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `sort_order`, `status`, `create_by`, `create_time`)
SELECT REPLACE(UUID(), '-', ''), d.id, '未打印', '0', 2, 1, 'admin', NOW()
FROM `sys_dict` d WHERE d.`dict_code` = 'xslmes_print_flag'
AND NOT EXISTS (SELECT 1 FROM `sys_dict_item` i WHERE i.`dict_id` = d.id AND i.`item_value` = '0');