feat:新增木箱信息查询功能,库存信息查询功能

This commit is contained in:
zhouz
2026-08-06 09:21:08 +08:00
parent d796fbad8c
commit 7a7ec7c75e
45 changed files with 2017 additions and 5 deletions

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

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

View 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);

View 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;

View File

@@ -0,0 +1,80 @@
-- 遂宁成品仓 / 主存区完整仓位初始化。
-- 编码规则:层 + 两位块号 - 两位排号 - 两位列号,例如 203-04-05。
-- 当前布局12 块、3 层,每层 364 个仓位,共 1092 个仓位。
-- placement_type01 双通、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
);