feat:新增木箱信息查询功能,库存信息查询功能
This commit is contained in:
59
sql/mysql/wms_box_info_menu.sql
Normal file
59
sql/mysql/wms_box_info_menu.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
-- WMS基础模块 - 木箱信息只读菜单,脚本可重复执行。
|
||||
-- 清理早期误放在“基础数据”下的木箱信息菜单。
|
||||
DELETE FROM system_menu
|
||||
WHERE id = 2091000000000000102
|
||||
AND permission = 'base:box-info:query';
|
||||
|
||||
DELETE FROM system_menu
|
||||
WHERE id = 2091000000000000101
|
||||
AND path = 'box-info'
|
||||
AND component = 'base/boxinfo/index';
|
||||
|
||||
SET @wms_base_menu_id = (
|
||||
SELECT id
|
||||
FROM system_menu
|
||||
WHERE path = 'wms-base'
|
||||
AND type = 1
|
||||
AND deleted = b'0'
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
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)
|
||||
SELECT 2091000000000000101, '木箱信息', '', 2, 4, @wms_base_menu_id,
|
||||
'box-info', 'ep:box', 'wms/boxinfo/index', 'WmsBoxInfo',
|
||||
0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
|
||||
WHERE @wms_base_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM system_menu
|
||||
WHERE parent_id = @wms_base_menu_id
|
||||
AND path = 'box-info'
|
||||
AND deleted = b'0'
|
||||
);
|
||||
|
||||
SET @box_info_menu_id = (
|
||||
SELECT id
|
||||
FROM system_menu
|
||||
WHERE parent_id = @wms_base_menu_id
|
||||
AND path = 'box-info'
|
||||
AND deleted = b'0'
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
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)
|
||||
SELECT 2091000000000000102, '木箱信息查询', 'wms:box-info:query', 3, 1,
|
||||
@box_info_menu_id, '', '#', NULL, NULL,
|
||||
0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
|
||||
WHERE @box_info_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM system_menu
|
||||
WHERE permission = 'wms:box-info:query'
|
||||
AND deleted = b'0'
|
||||
);
|
||||
65
sql/mysql/wms_box_info_test_data.sql
Normal file
65
sql/mysql/wms_box_info_test_data.sql
Normal file
@@ -0,0 +1,65 @@
|
||||
-- 木箱信息查询测试数据,按木箱号判重,可重复执行。
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000001, 'TEST-BOX-001', 'MAT-CU-001', '双面光锂电铜箔5μm', '3',
|
||||
'1200', '1000', '850', '2026-08-05 09:10:00', '4', '1', '0', '68.50'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-001');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000002, 'TEST-BOX-002', 'MAT-CU-001', '双面光锂电铜箔5μm', '2',
|
||||
'1200', '1000', '900', '2026-08-05 09:20:00', '4', '1', '1', '72.30'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-002');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000003, 'TEST-BOX-003', 'MAT-CU-002', '双面光锂电铜箔6μm', '4',
|
||||
'1300', '1050', '880', '2026-08-05 09:30:00', '6', '1', '0', '75.80'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-003');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000004, 'TEST-BOX-004', 'MAT-CU-002', '双面光锂电铜箔6μm', '1',
|
||||
'1300', '1050', '920', '2026-08-05 09:40:00', '6', '2', '1', '80.20'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-004');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000005, 'TEST-BOX-005', 'MAT-CU-003', '高抗拉锂电铜箔4.5μm', '5',
|
||||
'1100', '950', '800', '2026-08-05 10:00:00', '4', '2', '0', '65.00'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-005');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000006, 'TEST-BOX-006', 'MAT-CU-003', '高抗拉锂电铜箔4.5μm', '2',
|
||||
'1100', '950', '820', '2026-08-05 10:10:00', '4', '2', '1', '66.80'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-006');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000007, 'TEST-BOX-007', 'MAT-CU-004', '标准锂电铜箔8μm', '3',
|
||||
'1400', '1100', '950', '2026-08-05 10:20:00', '8', '1', '0', '88.60'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-007');
|
||||
|
||||
INSERT INTO wmw_boxinfo
|
||||
(box_id, box_no, material_code, material_name, num,
|
||||
box_length, box_width, box_high, insert_time, lash_num,
|
||||
vehicle_type, is_packing, box_weight)
|
||||
SELECT 2092000000000000008, 'TEST-BOX-008', 'MAT-CU-004', '标准锂电铜箔8μm', '1',
|
||||
'1400', '1100', '980', '2026-08-05 10:30:00', '8', '1', '1', '91.40'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wmw_boxinfo WHERE box_no = 'TEST-BOX-008');
|
||||
|
||||
39
sql/mysql/wms_empty_box.sql
Normal file
39
sql/mysql/wms_empty_box.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
-- 空木箱规格、实例状态和仓位锁初始化
|
||||
CREATE TABLE IF NOT EXISTS wms_boxtype (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
material_code VARCHAR(50) NOT NULL COMMENT '木箱规格编码',
|
||||
material_name VARCHAR(100) NOT NULL COMMENT '木箱规格名称',
|
||||
lash_num VARCHAR(10) NOT NULL COMMENT '捆扎次数',
|
||||
box_length VARCHAR(20) NOT NULL COMMENT '长度',
|
||||
box_width VARCHAR(20) NOT NULL COMMENT '宽度',
|
||||
box_height VARCHAR(20) NOT NULL COMMENT '高度',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_wms_boxtype_material_code (material_code)
|
||||
) COMMENT '木箱规格';
|
||||
|
||||
ALTER TABLE wmw_boxinfo
|
||||
ADD COLUMN status VARCHAR(1) NOT NULL DEFAULT '1' COMMENT '状态:0待入库、1在库、2已出库',
|
||||
ADD COLUMN out_time VARCHAR(25) NULL COMMENT '出库时间',
|
||||
ADD INDEX idx_wmw_boxinfo_fifo (material_code, status, insert_time);
|
||||
|
||||
INSERT INTO system_dict_data
|
||||
(id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
|
||||
SELECT 2080566516439883785, 8, '木箱入库锁', '8', 'wms_lock_type', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'wms_lock_type' AND value = '8' AND deleted = b'0');
|
||||
|
||||
INSERT INTO system_dict_data
|
||||
(id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
|
||||
SELECT 2080566516439883786, 9, '木箱出库锁', '9', 'wms_lock_type', 0, 'warning', '', '', '1', NOW(), '1', NOW(), b'0'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'wms_lock_type' AND value = '9' AND deleted = b'0');
|
||||
|
||||
INSERT INTO base_code_rule
|
||||
(rule_name, rule_code, segment_config, code_separator, letter_case, total_length,
|
||||
seq_strategy, status, remark, creator, updater, deleted)
|
||||
SELECT '木箱编码', 'BOX_CODE',
|
||||
JSON_ARRAY(
|
||||
JSON_OBJECT('type', 'PREFIX', 'value', 'BOX'),
|
||||
JSON_OBJECT('type', 'DATE', 'format', 'yyyyMMdd'),
|
||||
JSON_OBJECT('type', 'SEQUENCE', 'resetBy', 'DAY', 'startAt', 1,
|
||||
'maxValue', 9999, 'paddingLen', 4, 'paddingChar', '0')
|
||||
), '-', 1, 0, 'segment', 0, '空木箱编码', '1', '1', 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM base_code_rule WHERE rule_code = 'BOX_CODE' AND deleted = 0);
|
||||
4
sql/mysql/wms_structattr_inventory_type.sql
Normal file
4
sql/mysql/wms_structattr_inventory_type.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- 仓位库存类型:0空、1成品、2空载具、3空木箱
|
||||
ALTER TABLE wms_structattr
|
||||
ADD COLUMN inventory_type VARCHAR(1) NOT NULL DEFAULT '0' COMMENT '库存类型:0空、1成品、2空载具、3空木箱'
|
||||
AFTER storagevehicle_qty;
|
||||
80
sql/mysql/wms_structattr_layout_full.sql
Normal file
80
sql/mysql/wms_structattr_layout_full.sql
Normal file
@@ -0,0 +1,80 @@
|
||||
-- 遂宁成品仓 / 主存区完整仓位初始化。
|
||||
-- 编码规则:层 + 两位块号 - 两位排号 - 两位列号,例如 203-04-05。
|
||||
-- 当前布局:12 块、3 层,每层 364 个仓位,共 1092 个仓位。
|
||||
-- placement_type:01 双通、02 左通、03 右通。
|
||||
-- 使用 NOT EXISTS 保证重复执行时不重复插入相同 struct_id / struct_code。
|
||||
|
||||
INSERT INTO wms_structattr
|
||||
(struct_id, struct_code, struct_name, simple_name,
|
||||
sect_id, sect_code, sect_name,
|
||||
stor_id, stor_code, stor_name,
|
||||
is_tempstruct, row_num, col_num, layer_num, block_num, placement_type,
|
||||
creator, create_time, updater, update_time, deleted, is_used,
|
||||
storagevehicle_qty, lock_type, remark)
|
||||
SELECT code_data.struct_code,
|
||||
code_data.struct_code,
|
||||
CONCAT('主存区-', LPAD(code_data.block_num, 2, '0'), '块-',
|
||||
LPAD(code_data.row_num, 2, '0'), '排-',
|
||||
LPAD(code_data.col_num, 2, '0'), '列-',
|
||||
code_data.layer_num, '层'),
|
||||
code_data.struct_code,
|
||||
'2078406241102450689', 'ZC01', '主存区',
|
||||
'2078405279260463106', 'AC01', '遂宁成品仓',
|
||||
'0', code_data.row_num, code_data.col_num, code_data.layer_num,
|
||||
code_data.block_num, code_data.placement_type,
|
||||
'1', NOW(), '1', NOW(), '0', 1,
|
||||
0, '1', '根据仓库CAD布局初始化'
|
||||
FROM (
|
||||
SELECT CONCAT(layer_num, LPAD(block_num, 2, '0'), '-',
|
||||
LPAD(row_num, 2, '0'), '-', LPAD(col_num, 2, '0')) AS struct_code,
|
||||
block_num, row_num, col_num, layer_num, placement_type
|
||||
FROM (
|
||||
SELECT layout.block_num,
|
||||
row_seq.num AS row_num,
|
||||
col_seq.num AS col_num,
|
||||
layer_seq.layer_num,
|
||||
layout.placement_type
|
||||
FROM (
|
||||
SELECT 1 block_num, 1 row_start, 6 row_end, 7 col_count, '02' placement_type
|
||||
UNION ALL SELECT 2, 1, 3, 4, '02'
|
||||
UNION ALL SELECT 2, 4, 7, 2, '02'
|
||||
UNION ALL SELECT 3, 1, 2, 4, '02'
|
||||
UNION ALL SELECT 3, 3, 6, 2, '02'
|
||||
UNION ALL SELECT 3, 7, 7, 1, '02'
|
||||
UNION ALL SELECT 3, 8, 8, 2, '02'
|
||||
UNION ALL SELECT 4, 1, 11, 2, '01'
|
||||
UNION ALL SELECT 5, 1, 8, 2, '01'
|
||||
UNION ALL SELECT 6, 1, 8, 2, '01'
|
||||
UNION ALL SELECT 6, 9, 17, 1, '01'
|
||||
UNION ALL SELECT 7, 1, 11, 5, '01'
|
||||
UNION ALL SELECT 8, 1, 8, 5, '01'
|
||||
UNION ALL SELECT 9, 1, 16, 5, '01'
|
||||
UNION ALL SELECT 10, 1, 7, 1, '03'
|
||||
UNION ALL SELECT 11, 1, 27, 1, '03'
|
||||
UNION ALL SELECT 12, 1, 11, 1, '03'
|
||||
) layout
|
||||
INNER JOIN (
|
||||
SELECT 1 num UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
|
||||
UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8
|
||||
UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12
|
||||
UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16
|
||||
UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20
|
||||
UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24
|
||||
UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27
|
||||
) row_seq ON row_seq.num BETWEEN layout.row_start AND layout.row_end
|
||||
INNER JOIN (
|
||||
SELECT 1 num UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
|
||||
UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7
|
||||
) col_seq ON col_seq.num <= layout.col_count
|
||||
CROSS JOIN (
|
||||
SELECT 1 layer_num UNION ALL SELECT 2 UNION ALL SELECT 3
|
||||
) layer_seq
|
||||
) expanded_layout
|
||||
) code_data
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM wms_structattr existing
|
||||
WHERE existing.struct_id = code_data.struct_code
|
||||
OR existing.struct_code = code_data.struct_code
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user