Initial commit
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS document_archives (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '归档记录ID',
|
||||
document_type VARCHAR(50) NOT NULL COMMENT '单据类型:销售订单/采购订单',
|
||||
business_id BIGINT NOT NULL COMMENT '业务单据ID',
|
||||
document_no VARCHAR(100) NOT NULL COMMENT '业务单据编号',
|
||||
archive_version INT NOT NULL COMMENT '归档版本号',
|
||||
template_version VARCHAR(50) NOT NULL COMMENT '模板版本',
|
||||
file_format VARCHAR(20) NOT NULL COMMENT '文件格式',
|
||||
file_name VARCHAR(255) NOT NULL COMMENT '文件名',
|
||||
file_path VARCHAR(500) NOT NULL COMMENT '文件路径',
|
||||
file_hash VARCHAR(128) NULL COMMENT '文件哈希',
|
||||
status VARCHAR(32) NOT NULL COMMENT '归档状态:未生成/已归档/归档失败',
|
||||
error_message TEXT NULL COMMENT '归档失败原因',
|
||||
created_by BIGINT NULL COMMENT '创建人用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_document_archives_version (document_type, business_id, archive_version, file_format),
|
||||
KEY idx_document_archives_business_latest (document_type, business_id, archive_version),
|
||||
KEY idx_document_archives_document_no (document_no),
|
||||
KEY idx_document_archives_status (status, created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='单据PDF归档记录';
|
||||
@@ -0,0 +1,32 @@
|
||||
SET @equipment_area_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'em_equipment'
|
||||
AND COLUMN_NAME = 'occupied_area_sqm'
|
||||
);
|
||||
|
||||
SET @add_equipment_area_column_sql := IF(
|
||||
@equipment_area_column_exists = 0,
|
||||
'ALTER TABLE em_equipment ADD COLUMN occupied_area_sqm DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT ''占用场地面积(平方米)'' AFTER rated_power_kw',
|
||||
'SELECT ''em_equipment.occupied_area_sqm already exists'''
|
||||
);
|
||||
|
||||
PREPARE add_equipment_area_column_stmt FROM @add_equipment_area_column_sql;
|
||||
EXECUTE add_equipment_area_column_stmt;
|
||||
DEALLOCATE PREPARE add_equipment_area_column_stmt;
|
||||
|
||||
ALTER TABLE fi_overhead_entry
|
||||
MODIFY COLUMN allocation_basis VARCHAR(32) NOT NULL DEFAULT 'WORK_HOURS' COMMENT '分摊依据:WORK_HOURS/MACHINE_HOURS/QTY/OCCUPIED_AREA';
|
||||
|
||||
UPDATE em_equipment
|
||||
SET occupied_area_sqm = CASE equipment_code
|
||||
WHEN 'EQ-KP-01' THEN 12.50
|
||||
WHEN 'EQ-CY-01' THEN 16.00
|
||||
WHEN 'EQ-MC-01' THEN 8.00
|
||||
WHEN 'EQ-ZW-01' THEN 14.00
|
||||
WHEN 'EQ-HJ-01' THEN 6.00
|
||||
WHEN 'EQ-QA-01' THEN 4.00
|
||||
ELSE occupied_area_sqm
|
||||
END
|
||||
WHERE equipment_code IN ('EQ-KP-01', 'EQ-CY-01', 'EQ-MC-01', 'EQ-ZW-01', 'EQ-HJ-01', 'EQ-QA-01');
|
||||
@@ -0,0 +1,80 @@
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wh_stock_lot' AND COLUMN_NAME = 'logistics_waybill_no') = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN logistics_waybill_no VARCHAR(100) NULL COMMENT ''运单号'' AFTER source_material_summary',
|
||||
'SELECT ''wh_stock_lot.logistics_waybill_no already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wh_stock_lot' AND COLUMN_NAME = 'logistics_freight_amount') = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN logistics_freight_amount DECIMAL(18,2) NULL COMMENT ''运费'' AFTER logistics_waybill_no',
|
||||
'SELECT ''wh_stock_lot.logistics_freight_amount already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wh_stock_lot' AND COLUMN_NAME = 'logistics_photo_url') = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN logistics_photo_url VARCHAR(255) NULL COMMENT ''订单照片路径'' AFTER logistics_freight_amount',
|
||||
'SELECT ''wh_stock_lot.logistics_photo_url already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wh_inventory_txn' AND COLUMN_NAME = 'logistics_waybill_no') = 0,
|
||||
'ALTER TABLE wh_inventory_txn ADD COLUMN logistics_waybill_no VARCHAR(100) NULL COMMENT ''运单号'' AFTER source_line_id',
|
||||
'SELECT ''wh_inventory_txn.logistics_waybill_no already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wh_inventory_txn' AND COLUMN_NAME = 'logistics_freight_amount') = 0,
|
||||
'ALTER TABLE wh_inventory_txn ADD COLUMN logistics_freight_amount DECIMAL(18,2) NULL COMMENT ''运费'' AFTER logistics_waybill_no',
|
||||
'SELECT ''wh_inventory_txn.logistics_freight_amount already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'wh_inventory_txn' AND COLUMN_NAME = 'logistics_photo_url') = 0,
|
||||
'ALTER TABLE wh_inventory_txn ADD COLUMN logistics_photo_url VARCHAR(255) NULL COMMENT ''订单照片路径'' AFTER logistics_freight_amount',
|
||||
'SELECT ''wh_inventory_txn.logistics_photo_url already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'so_delivery' AND COLUMN_NAME = 'logistics_waybill_no') = 0,
|
||||
'ALTER TABLE so_delivery ADD COLUMN logistics_waybill_no VARCHAR(100) NULL COMMENT ''运单号'' AFTER delivery_address',
|
||||
'SELECT ''so_delivery.logistics_waybill_no already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'so_delivery' AND COLUMN_NAME = 'logistics_freight_amount') = 0,
|
||||
'ALTER TABLE so_delivery ADD COLUMN logistics_freight_amount DECIMAL(18,2) NULL COMMENT ''运费'' AFTER logistics_waybill_no',
|
||||
'SELECT ''so_delivery.logistics_freight_amount already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'so_delivery' AND COLUMN_NAME = 'logistics_photo_url') = 0,
|
||||
'ALTER TABLE so_delivery ADD COLUMN logistics_photo_url VARCHAR(255) NULL COMMENT ''订单照片路径'' AFTER logistics_freight_amount',
|
||||
'SELECT ''so_delivery.logistics_photo_url already exists'''
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,335 @@
|
||||
SET @po_receipt_item_merge_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'po_receipt_item'
|
||||
AND COLUMN_NAME = 'merge_to_lot_id'
|
||||
);
|
||||
SET @po_receipt_item_merge_sql := IF(
|
||||
@po_receipt_item_merge_column_exists = 0,
|
||||
'ALTER TABLE po_receipt_item ADD COLUMN merge_to_lot_id BIGINT NULL COMMENT ''合并入库目标库存批次ID;为空表示新建独立批次'' AFTER lot_no',
|
||||
'SELECT ''po_receipt_item.merge_to_lot_id already exists'''
|
||||
);
|
||||
PREPARE po_receipt_item_merge_stmt FROM @po_receipt_item_merge_sql;
|
||||
EXECUTE po_receipt_item_merge_stmt;
|
||||
DEALLOCATE PREPARE po_receipt_item_merge_stmt;
|
||||
|
||||
SET @stock_lot_parent_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND COLUMN_NAME = 'parent_lot_id'
|
||||
);
|
||||
SET @stock_lot_parent_sql := IF(
|
||||
@stock_lot_parent_column_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN parent_lot_id BIGINT NULL COMMENT ''父批次ID;用于合并批次、退货批次或成品来源追溯'' AFTER lot_no',
|
||||
'SELECT ''wh_stock_lot.parent_lot_id already exists'''
|
||||
);
|
||||
PREPARE stock_lot_parent_stmt FROM @stock_lot_parent_sql;
|
||||
EXECUTE stock_lot_parent_stmt;
|
||||
DEALLOCATE PREPARE stock_lot_parent_stmt;
|
||||
|
||||
SET @stock_lot_role_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND COLUMN_NAME = 'lot_role'
|
||||
);
|
||||
SET @stock_lot_role_sql := IF(
|
||||
@stock_lot_role_column_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN lot_role VARCHAR(32) NOT NULL DEFAULT ''INVENTORY'' COMMENT ''批次角色:INBOUND_RAW/MERGED_RAW/FINISHED_FROM_RAW_BATCH/RETURNED_FINISHED/INVENTORY'' AFTER parent_lot_id',
|
||||
'SELECT ''wh_stock_lot.lot_role already exists'''
|
||||
);
|
||||
PREPARE stock_lot_role_stmt FROM @stock_lot_role_sql;
|
||||
EXECUTE stock_lot_role_stmt;
|
||||
DEALLOCATE PREPARE stock_lot_role_stmt;
|
||||
|
||||
SET @stock_lot_sub_batch_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND COLUMN_NAME = 'material_sub_batch_no'
|
||||
);
|
||||
SET @stock_lot_sub_batch_sql := IF(
|
||||
@stock_lot_sub_batch_column_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN material_sub_batch_no VARCHAR(80) NULL COMMENT ''原材料生产分批号,格式JH_材料号_0001'' AFTER lot_role',
|
||||
'SELECT ''wh_stock_lot.material_sub_batch_no already exists'''
|
||||
);
|
||||
PREPARE stock_lot_sub_batch_stmt FROM @stock_lot_sub_batch_sql;
|
||||
EXECUTE stock_lot_sub_batch_stmt;
|
||||
DEALLOCATE PREPARE stock_lot_sub_batch_stmt;
|
||||
|
||||
SET @stock_lot_source_material_lot_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND COLUMN_NAME = 'source_material_lot_id'
|
||||
);
|
||||
SET @stock_lot_source_material_lot_sql := IF(
|
||||
@stock_lot_source_material_lot_column_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN source_material_lot_id BIGINT NULL COMMENT ''成品批次来源原材料库存批次ID'' AFTER source_line_id',
|
||||
'SELECT ''wh_stock_lot.source_material_lot_id already exists'''
|
||||
);
|
||||
PREPARE stock_lot_source_material_lot_stmt FROM @stock_lot_source_material_lot_sql;
|
||||
EXECUTE stock_lot_source_material_lot_stmt;
|
||||
DEALLOCATE PREPARE stock_lot_source_material_lot_stmt;
|
||||
|
||||
SET @stock_lot_source_material_sub_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND COLUMN_NAME = 'source_material_sub_batch_no'
|
||||
);
|
||||
SET @stock_lot_source_material_sub_sql := IF(
|
||||
@stock_lot_source_material_sub_column_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN source_material_sub_batch_no VARCHAR(80) NULL COMMENT ''成品批次来源原材料生产分批号'' AFTER source_material_lot_id',
|
||||
'SELECT ''wh_stock_lot.source_material_sub_batch_no already exists'''
|
||||
);
|
||||
PREPARE stock_lot_source_material_sub_stmt FROM @stock_lot_source_material_sub_sql;
|
||||
EXECUTE stock_lot_source_material_sub_stmt;
|
||||
DEALLOCATE PREPARE stock_lot_source_material_sub_stmt;
|
||||
|
||||
SET @stock_lot_source_material_summary_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND COLUMN_NAME = 'source_material_summary'
|
||||
);
|
||||
SET @stock_lot_source_material_summary_sql := IF(
|
||||
@stock_lot_source_material_summary_column_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD COLUMN source_material_summary VARCHAR(1000) NULL COMMENT ''成品批次来源原材料分批摘要'' AFTER source_material_sub_batch_no',
|
||||
'SELECT ''wh_stock_lot.source_material_summary already exists'''
|
||||
);
|
||||
PREPARE stock_lot_source_material_summary_stmt FROM @stock_lot_source_material_summary_sql;
|
||||
EXECUTE stock_lot_source_material_summary_stmt;
|
||||
DEALLOCATE PREPARE stock_lot_source_material_summary_stmt;
|
||||
|
||||
SET @completion_source_material_lot_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_completion_receipt_item'
|
||||
AND COLUMN_NAME = 'source_material_lot_id'
|
||||
);
|
||||
SET @completion_source_material_lot_sql := IF(
|
||||
@completion_source_material_lot_column_exists = 0,
|
||||
'ALTER TABLE pp_completion_receipt_item ADD COLUMN source_material_lot_id BIGINT NULL COMMENT ''成品来源原材料库存批次ID'' AFTER lot_no',
|
||||
'SELECT ''pp_completion_receipt_item.source_material_lot_id already exists'''
|
||||
);
|
||||
PREPARE completion_source_material_lot_stmt FROM @completion_source_material_lot_sql;
|
||||
EXECUTE completion_source_material_lot_stmt;
|
||||
DEALLOCATE PREPARE completion_source_material_lot_stmt;
|
||||
|
||||
SET @completion_source_material_sub_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_completion_receipt_item'
|
||||
AND COLUMN_NAME = 'source_material_sub_batch_no'
|
||||
);
|
||||
SET @completion_source_material_sub_sql := IF(
|
||||
@completion_source_material_sub_column_exists = 0,
|
||||
'ALTER TABLE pp_completion_receipt_item ADD COLUMN source_material_sub_batch_no VARCHAR(80) NULL COMMENT ''成品来源原材料生产分批号'' AFTER source_material_lot_id',
|
||||
'SELECT ''pp_completion_receipt_item.source_material_sub_batch_no already exists'''
|
||||
);
|
||||
PREPARE completion_source_material_sub_stmt FROM @completion_source_material_sub_sql;
|
||||
EXECUTE completion_source_material_sub_stmt;
|
||||
DEALLOCATE PREPARE completion_source_material_sub_stmt;
|
||||
|
||||
SET @completion_source_material_summary_column_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_completion_receipt_item'
|
||||
AND COLUMN_NAME = 'source_material_summary'
|
||||
);
|
||||
SET @completion_source_material_summary_sql := IF(
|
||||
@completion_source_material_summary_column_exists = 0,
|
||||
'ALTER TABLE pp_completion_receipt_item ADD COLUMN source_material_summary VARCHAR(1000) NULL COMMENT ''成品来源原材料分批摘要'' AFTER source_material_sub_batch_no',
|
||||
'SELECT ''pp_completion_receipt_item.source_material_summary already exists'''
|
||||
);
|
||||
PREPARE completion_source_material_summary_stmt FROM @completion_source_material_summary_sql;
|
||||
EXECUTE completion_source_material_summary_stmt;
|
||||
DEALLOCATE PREPARE completion_source_material_summary_stmt;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pp_work_order_material_issue (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
work_order_material_id BIGINT NOT NULL COMMENT '工单用料ID',
|
||||
work_order_id BIGINT NOT NULL COMMENT '生产工单ID',
|
||||
material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
source_lot_id BIGINT NOT NULL COMMENT '来源原材料库存批次ID',
|
||||
material_sub_batch_no VARCHAR(80) NOT NULL COMMENT '兼容字段:来源库存批次号',
|
||||
issued_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '领用数量',
|
||||
issued_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '领用重量(kg)',
|
||||
unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '领用单价',
|
||||
amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '领用金额',
|
||||
issue_time DATETIME NOT NULL COMMENT '领用时间',
|
||||
operator_user_id BIGINT NULL COMMENT '操作人用户ID',
|
||||
remark VARCHAR(255) NULL COMMENT '备注',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
INDEX idx_material_issue_work_order (work_order_id),
|
||||
INDEX idx_material_issue_lot (source_lot_id),
|
||||
INDEX idx_material_issue_material (material_item_id),
|
||||
FOREIGN KEY (work_order_material_id) REFERENCES pp_work_order_material(id),
|
||||
FOREIGN KEY (work_order_id) REFERENCES pp_work_order(id),
|
||||
FOREIGN KEY (material_item_id) REFERENCES md_item(id),
|
||||
FOREIGN KEY (source_lot_id) REFERENCES wh_stock_lot(id)
|
||||
) ENGINE=InnoDB COMMENT='工单原材料领用分批记录';
|
||||
|
||||
SET @idx_po_receipt_item_merge_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'po_receipt_item'
|
||||
AND INDEX_NAME = 'idx_receipt_item_merge_to_lot'
|
||||
);
|
||||
SET @idx_po_receipt_item_merge_sql := IF(
|
||||
@idx_po_receipt_item_merge_exists = 0,
|
||||
'ALTER TABLE po_receipt_item ADD INDEX idx_receipt_item_merge_to_lot (merge_to_lot_id)',
|
||||
'SELECT ''idx_receipt_item_merge_to_lot already exists'''
|
||||
);
|
||||
PREPARE idx_po_receipt_item_merge_stmt FROM @idx_po_receipt_item_merge_sql;
|
||||
EXECUTE idx_po_receipt_item_merge_stmt;
|
||||
DEALLOCATE PREPARE idx_po_receipt_item_merge_stmt;
|
||||
|
||||
SET @idx_stock_lot_source_material_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND INDEX_NAME = 'idx_stock_lot_source_material'
|
||||
);
|
||||
SET @idx_stock_lot_source_material_sql := IF(
|
||||
@idx_stock_lot_source_material_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD INDEX idx_stock_lot_source_material (source_material_lot_id, source_material_sub_batch_no)',
|
||||
'SELECT ''idx_stock_lot_source_material already exists'''
|
||||
);
|
||||
PREPARE idx_stock_lot_source_material_stmt FROM @idx_stock_lot_source_material_sql;
|
||||
EXECUTE idx_stock_lot_source_material_stmt;
|
||||
DEALLOCATE PREPARE idx_stock_lot_source_material_stmt;
|
||||
|
||||
SET @idx_completion_source_material_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_completion_receipt_item'
|
||||
AND INDEX_NAME = 'idx_completion_source_material'
|
||||
);
|
||||
SET @idx_completion_source_material_sql := IF(
|
||||
@idx_completion_source_material_exists = 0,
|
||||
'ALTER TABLE pp_completion_receipt_item ADD INDEX idx_completion_source_material (source_material_lot_id, source_material_sub_batch_no)',
|
||||
'SELECT ''idx_completion_source_material already exists'''
|
||||
);
|
||||
PREPARE idx_completion_source_material_stmt FROM @idx_completion_source_material_sql;
|
||||
EXECUTE idx_completion_source_material_stmt;
|
||||
DEALLOCATE PREPARE idx_completion_source_material_stmt;
|
||||
|
||||
UPDATE wh_stock_lot lot
|
||||
JOIN md_item item ON item.id = lot.item_id
|
||||
SET lot.lot_role = CASE
|
||||
WHEN item.item_type = 'RAW_MATERIAL' AND lot.source_doc_type = 'PURCHASE_RECEIPT' THEN 'INBOUND_RAW'
|
||||
WHEN item.item_type = 'FINISHED_GOOD' AND lot.source_doc_type = 'FG_RECEIPT' THEN 'FINISHED_GOOD'
|
||||
ELSE lot.lot_role
|
||||
END
|
||||
WHERE lot.lot_role = 'INVENTORY';
|
||||
|
||||
INSERT INTO pp_work_order_material_issue (
|
||||
work_order_material_id,
|
||||
work_order_id,
|
||||
material_item_id,
|
||||
source_lot_id,
|
||||
material_sub_batch_no,
|
||||
issued_qty,
|
||||
issued_weight_kg,
|
||||
unit_cost,
|
||||
amount,
|
||||
issue_time,
|
||||
operator_user_id,
|
||||
remark,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
source_rows.work_order_material_id,
|
||||
source_rows.work_order_id,
|
||||
source_rows.material_item_id,
|
||||
source_rows.source_lot_id,
|
||||
CONCAT('JH_', source_rows.material_code, '_', LPAD(source_rows.seq_no, 4, '0')) AS material_sub_batch_no,
|
||||
source_rows.issued_qty,
|
||||
source_rows.issued_weight_kg,
|
||||
source_rows.unit_cost,
|
||||
source_rows.amount,
|
||||
source_rows.issue_time,
|
||||
source_rows.operator_user_id,
|
||||
source_rows.remark,
|
||||
NOW(),
|
||||
NOW()
|
||||
FROM (
|
||||
SELECT
|
||||
wom.id AS work_order_material_id,
|
||||
wom.work_order_id AS work_order_id,
|
||||
txn.item_id AS material_item_id,
|
||||
txn.lot_id AS source_lot_id,
|
||||
item.item_code AS material_code,
|
||||
ROW_NUMBER() OVER (PARTITION BY txn.item_id ORDER BY txn.biz_time, txn.id) AS seq_no,
|
||||
ABS(txn.qty_change) AS issued_qty,
|
||||
ABS(txn.weight_change_kg) AS issued_weight_kg,
|
||||
txn.unit_cost AS unit_cost,
|
||||
ABS(txn.amount) AS amount,
|
||||
txn.biz_time AS issue_time,
|
||||
txn.operator_user_id AS operator_user_id,
|
||||
txn.remark AS remark
|
||||
FROM wh_inventory_txn txn
|
||||
JOIN pp_work_order_material wom
|
||||
ON wom.id = txn.source_line_id
|
||||
AND wom.work_order_id = txn.source_doc_id
|
||||
JOIN md_item item ON item.id = txn.item_id
|
||||
WHERE txn.txn_type = 'MATERIAL_ISSUE'
|
||||
AND txn.source_doc_type = 'WORK_ORDER'
|
||||
AND txn.lot_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM pp_work_order_material_issue)
|
||||
) source_rows;
|
||||
|
||||
UPDATE pp_completion_receipt_item item
|
||||
JOIN pp_completion_receipt receipt ON receipt.id = item.completion_receipt_id
|
||||
JOIN (
|
||||
SELECT
|
||||
issue.work_order_id,
|
||||
MIN(issue.source_lot_id) AS source_material_lot_id,
|
||||
SUBSTRING_INDEX(GROUP_CONCAT(issue.material_sub_batch_no ORDER BY issue.id SEPARATOR ','), ',', 1) AS source_material_sub_batch_no,
|
||||
LEFT(
|
||||
GROUP_CONCAT(
|
||||
CONCAT(issue.material_sub_batch_no, ' / ', material.item_name, ' / ', issue.issued_weight_kg, 'kg / ¥', issue.amount)
|
||||
ORDER BY issue.id
|
||||
SEPARATOR ';'
|
||||
),
|
||||
1000
|
||||
) AS source_material_summary
|
||||
FROM pp_work_order_material_issue issue
|
||||
JOIN md_item material ON material.id = issue.material_item_id
|
||||
GROUP BY issue.work_order_id
|
||||
) source_map ON source_map.work_order_id = receipt.work_order_id
|
||||
SET
|
||||
item.source_material_lot_id = COALESCE(item.source_material_lot_id, source_map.source_material_lot_id),
|
||||
item.source_material_sub_batch_no = COALESCE(item.source_material_sub_batch_no, source_map.source_material_sub_batch_no),
|
||||
item.source_material_summary = COALESCE(item.source_material_summary, source_map.source_material_summary)
|
||||
WHERE item.source_material_lot_id IS NULL;
|
||||
|
||||
UPDATE wh_stock_lot lot
|
||||
JOIN pp_completion_receipt_item item
|
||||
ON lot.source_doc_type = 'FG_RECEIPT'
|
||||
AND lot.source_line_id = item.id
|
||||
SET
|
||||
lot.parent_lot_id = COALESCE(lot.parent_lot_id, item.source_material_lot_id),
|
||||
lot.lot_role = 'FINISHED_FROM_RAW_BATCH',
|
||||
lot.source_material_lot_id = COALESCE(lot.source_material_lot_id, item.source_material_lot_id),
|
||||
lot.source_material_sub_batch_no = COALESCE(lot.source_material_sub_batch_no, item.source_material_sub_batch_no),
|
||||
lot.source_material_summary = COALESCE(lot.source_material_summary, item.source_material_summary)
|
||||
WHERE item.source_material_lot_id IS NOT NULL;
|
||||
@@ -0,0 +1,101 @@
|
||||
CREATE TABLE IF NOT EXISTS pp_production_batch_ledger (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '生产台账ID',
|
||||
material_lot_id BIGINT NOT NULL COMMENT '材料库存批次ID',
|
||||
material_lot_no VARCHAR(128) NOT NULL COMMENT '材料库存批次号',
|
||||
material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
status VARCHAR(32) NOT NULL DEFAULT '在生产' COMMENT '状态:在生产/锁单',
|
||||
miniapp_selectable TINYINT(1) NOT NULL DEFAULT 1 COMMENT '小程序是否可选',
|
||||
total_issued_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '累计领料重量',
|
||||
outside_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '库外未闭环重量',
|
||||
finished_inbound_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '累计成品入库数量',
|
||||
surplus_inbound_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '累计余料入库重量',
|
||||
scrap_inbound_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '累计废料入库重量',
|
||||
writeoff_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '结单核销重量',
|
||||
first_issue_time DATETIME NULL COMMENT '首次生产出库时间',
|
||||
last_issue_time DATETIME NULL COMMENT '最近生产出库时间',
|
||||
locked_at DATETIME NULL COMMENT '最近锁单时间',
|
||||
reopened_at DATETIME NULL COMMENT '最近重新开工时间',
|
||||
lock_count INT NOT NULL DEFAULT 0 COMMENT '锁单次数',
|
||||
remark VARCHAR(500) NULL COMMENT '备注',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_production_batch_ledger_lot_product (material_lot_id, product_item_id),
|
||||
KEY idx_production_batch_ledger_status (status),
|
||||
KEY idx_production_batch_ledger_lot_no (material_lot_no),
|
||||
KEY idx_production_batch_ledger_material (material_item_id),
|
||||
KEY idx_production_batch_ledger_product (product_item_id),
|
||||
CONSTRAINT fk_production_batch_ledger_lot FOREIGN KEY (material_lot_id) REFERENCES wh_stock_lot(id),
|
||||
CONSTRAINT fk_production_batch_ledger_material FOREIGN KEY (material_item_id) REFERENCES md_item(id),
|
||||
CONSTRAINT fk_production_batch_ledger_product FOREIGN KEY (product_item_id) REFERENCES md_item(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='生产台账:材料库存批次号+产品';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pp_production_batch_ledger_txn (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '生产台账流水ID',
|
||||
production_ledger_id BIGINT NOT NULL COMMENT '生产台账ID',
|
||||
txn_type VARCHAR(32) NOT NULL COMMENT '流水类型:生产出库/成品入库/生产余料入库/生产废料入库/该批材料结单/重新开工/结单核销',
|
||||
qty_delta DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '数量变化',
|
||||
weight_delta_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '重量变化kg',
|
||||
outside_weight_after_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '变更后库外未闭环重量',
|
||||
source_doc_type VARCHAR(64) NULL COMMENT '来源单据类型',
|
||||
source_doc_id BIGINT NULL COMMENT '来源单据ID',
|
||||
source_line_id BIGINT NULL COMMENT '来源明细ID',
|
||||
biz_time DATETIME NOT NULL COMMENT '业务时间',
|
||||
operator_user_id BIGINT NULL COMMENT '操作人用户ID',
|
||||
remark VARCHAR(500) NULL COMMENT '备注',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
KEY idx_production_batch_ledger_txn_ledger (production_ledger_id),
|
||||
KEY idx_production_batch_ledger_txn_type (txn_type),
|
||||
KEY idx_production_batch_ledger_txn_source (source_doc_type, source_doc_id, source_line_id),
|
||||
CONSTRAINT fk_production_batch_ledger_txn_ledger FOREIGN KEY (production_ledger_id) REFERENCES pp_production_batch_ledger(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='生产台账流水';
|
||||
|
||||
SET @has_operation_report_ledger_id := (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_operation_report'
|
||||
AND COLUMN_NAME = 'production_ledger_id'
|
||||
);
|
||||
|
||||
SET @alter_operation_report_ledger_id := IF(
|
||||
@has_operation_report_ledger_id = 0,
|
||||
'ALTER TABLE pp_operation_report ADD COLUMN production_ledger_id BIGINT NULL COMMENT ''生产台账ID'' AFTER work_order_operation_id',
|
||||
'SELECT 1'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @alter_operation_report_ledger_id;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
ALTER TABLE pp_operation_report
|
||||
MODIFY COLUMN work_order_id BIGINT NULL COMMENT '生产工单ID(旧工单/返工使用,正常生产可为空)',
|
||||
MODIFY COLUMN work_order_operation_id BIGINT NULL COMMENT '生产工序ID(旧工单/返工使用,正常生产可为空)';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sys_system_config (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
config_code VARCHAR(100) NOT NULL COMMENT '配置编码',
|
||||
config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
|
||||
config_value VARCHAR(500) NOT NULL COMMENT '配置值',
|
||||
remark VARCHAR(500) NULL COMMENT '备注',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE/INACTIVE',
|
||||
created_by BIGINT NULL COMMENT '创建用户ID',
|
||||
updated_by BIGINT NULL COMMENT '更新用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_system_config_code (config_code),
|
||||
KEY idx_system_config_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置';
|
||||
|
||||
INSERT INTO sys_system_config (config_code, config_name, config_value, remark, status)
|
||||
SELECT
|
||||
'SMART_OPERATION_REPORT_ENABLED',
|
||||
'对接智能报工小程序',
|
||||
'开启',
|
||||
'开启后显示工序报工并按小程序报工数据计算生产进度;关闭后按ERP入库数据反推生产进度',
|
||||
'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_system_config WHERE config_code = 'SMART_OPERATION_REPORT_ENABLED'
|
||||
);
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE po_purchase_order
|
||||
ADD COLUMN target_warehouse_type VARCHAR(32) NOT NULL DEFAULT 'RAW' COMMENT '目标仓库类型:RAW原材料库/AUX辅料库' AFTER purchaser_employee_id;
|
||||
@@ -0,0 +1,48 @@
|
||||
CREATE TABLE IF NOT EXISTS po_purchase_return (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
return_no VARCHAR(50) NOT NULL,
|
||||
purchase_order_id BIGINT NOT NULL,
|
||||
warehouse_id BIGINT NOT NULL,
|
||||
return_date DATETIME NOT NULL,
|
||||
operator_user_id BIGINT NULL,
|
||||
logistics_waybill_no VARCHAR(100) NULL,
|
||||
logistics_freight_amount DECIMAL(18, 2) NULL,
|
||||
logistics_photo_url VARCHAR(255) NULL,
|
||||
reason VARCHAR(255) NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'CONFIRMED',
|
||||
remark VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_po_purchase_return_no (return_no),
|
||||
KEY idx_po_purchase_return_order (purchase_order_id),
|
||||
KEY idx_po_purchase_return_warehouse (warehouse_id),
|
||||
KEY idx_po_purchase_return_operator_user (operator_user_id),
|
||||
CONSTRAINT fk_po_purchase_return_order FOREIGN KEY (purchase_order_id) REFERENCES po_purchase_order (id),
|
||||
CONSTRAINT fk_po_purchase_return_warehouse FOREIGN KEY (warehouse_id) REFERENCES wh_warehouse (id),
|
||||
CONSTRAINT fk_po_purchase_return_operator_user FOREIGN KEY (operator_user_id) REFERENCES sys_user (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购退货出库单';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS po_purchase_return_item (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
purchase_return_id BIGINT NOT NULL,
|
||||
line_no INT NOT NULL,
|
||||
purchase_order_item_id BIGINT NOT NULL,
|
||||
material_item_id BIGINT NOT NULL,
|
||||
lot_id BIGINT NOT NULL,
|
||||
return_weight_kg DECIMAL(18, 6) NOT NULL DEFAULT 0,
|
||||
unit_cost DECIMAL(18, 4) NOT NULL DEFAULT 0,
|
||||
amount DECIMAL(18, 2) NOT NULL DEFAULT 0,
|
||||
reason VARCHAR(255) NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'CONFIRMED',
|
||||
remark VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_po_purchase_return_item_line (purchase_return_id, line_no),
|
||||
KEY idx_po_purchase_return_item_return (purchase_return_id),
|
||||
KEY idx_po_purchase_return_item_po_item (purchase_order_item_id),
|
||||
KEY idx_po_purchase_return_item_lot (lot_id),
|
||||
CONSTRAINT fk_po_purchase_return_item_return FOREIGN KEY (purchase_return_id) REFERENCES po_purchase_return (id),
|
||||
CONSTRAINT fk_po_purchase_return_item_po_item FOREIGN KEY (purchase_order_item_id) REFERENCES po_purchase_order_item (id),
|
||||
CONSTRAINT fk_po_purchase_return_item_material FOREIGN KEY (material_item_id) REFERENCES md_item (id),
|
||||
CONSTRAINT fk_po_purchase_return_item_lot FOREIGN KEY (lot_id) REFERENCES wh_stock_lot (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购退货出库明细';
|
||||
@@ -0,0 +1,26 @@
|
||||
CREATE TABLE IF NOT EXISTS sys_system_config (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
config_code VARCHAR(100) NOT NULL COMMENT '配置编码',
|
||||
config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
|
||||
config_value VARCHAR(500) NOT NULL COMMENT '配置值',
|
||||
remark VARCHAR(500) NULL COMMENT '备注',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE/INACTIVE',
|
||||
created_by BIGINT NULL COMMENT '创建用户ID',
|
||||
updated_by BIGINT NULL COMMENT '更新用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_system_config_code (config_code),
|
||||
KEY idx_system_config_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置';
|
||||
|
||||
INSERT INTO sys_system_config (config_code, config_name, config_value, remark, status)
|
||||
SELECT
|
||||
'RAW_MATERIAL_LOT_PREFIX',
|
||||
'原材料库存批次号前缀',
|
||||
'YL',
|
||||
'原材料库存批次号默认前缀,例如 YL0001',
|
||||
'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_system_config WHERE config_code = 'RAW_MATERIAL_LOT_PREFIX'
|
||||
);
|
||||
@@ -0,0 +1,260 @@
|
||||
SET @return_keep_id := (
|
||||
SELECT id
|
||||
FROM wh_warehouse
|
||||
WHERE warehouse_code = 'WH-RETURN-01'
|
||||
ORDER BY id
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
SET @return_keep_id := COALESCE(
|
||||
@return_keep_id,
|
||||
(
|
||||
SELECT id
|
||||
FROM wh_warehouse
|
||||
WHERE warehouse_type = 'RETURN'
|
||||
ORDER BY id
|
||||
LIMIT 1
|
||||
)
|
||||
);
|
||||
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-RETURN-01', '退货库', 'RETURN', NULL, 'ACTIVE', '客户退回且可返工产品的待处理库存'
|
||||
WHERE @return_keep_id IS NULL;
|
||||
|
||||
SET @return_keep_id := COALESCE(
|
||||
@return_keep_id,
|
||||
(
|
||||
SELECT id
|
||||
FROM wh_warehouse
|
||||
WHERE warehouse_code = 'WH-RETURN-01'
|
||||
ORDER BY id
|
||||
LIMIT 1
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE wh_warehouse
|
||||
SET warehouse_name = '退货库',
|
||||
warehouse_code = 'WH-RETURN-01',
|
||||
warehouse_type = 'RETURN',
|
||||
status = 'ACTIVE',
|
||||
remark = '客户退回且可返工产品的待处理库存'
|
||||
WHERE id = @return_keep_id;
|
||||
|
||||
INSERT INTO wh_location (
|
||||
warehouse_id,
|
||||
location_code,
|
||||
location_name,
|
||||
zone_name,
|
||||
is_default,
|
||||
is_locked,
|
||||
status,
|
||||
remark
|
||||
)
|
||||
SELECT
|
||||
@return_keep_id,
|
||||
'RTN-F-01',
|
||||
'退货暂存位',
|
||||
'F区',
|
||||
1,
|
||||
0,
|
||||
'ACTIVE',
|
||||
'退货库默认库位'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM wh_location
|
||||
WHERE warehouse_id = @return_keep_id
|
||||
AND location_code = 'RTN-F-01'
|
||||
);
|
||||
|
||||
UPDATE wh_location
|
||||
SET location_name = '退货暂存位',
|
||||
zone_name = 'F区',
|
||||
is_default = 1,
|
||||
is_locked = 0,
|
||||
status = 'ACTIVE',
|
||||
remark = '退货库默认库位'
|
||||
WHERE warehouse_id = @return_keep_id
|
||||
AND location_code = 'RTN-F-01';
|
||||
|
||||
SET @return_default_location_id := (
|
||||
SELECT id
|
||||
FROM wh_location
|
||||
WHERE warehouse_id = @return_keep_id
|
||||
AND location_code = 'RTN-F-01'
|
||||
ORDER BY id
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
UPDATE wh_location duplicate_location
|
||||
JOIN wh_warehouse duplicate_warehouse ON duplicate_warehouse.id = duplicate_location.warehouse_id
|
||||
SET duplicate_location.location_code = CONCAT('RTN-M', duplicate_warehouse.id, '-', duplicate_location.id),
|
||||
duplicate_location.location_name = CONCAT(LEFT(duplicate_location.location_name, 80), '(合并)'),
|
||||
duplicate_location.remark = LEFT(CONCAT(COALESCE(duplicate_location.remark, ''), ';重复退货库合并时重命名库位编码'), 255)
|
||||
WHERE duplicate_warehouse.warehouse_type = 'RETURN'
|
||||
AND duplicate_warehouse.id <> @return_keep_id;
|
||||
|
||||
UPDATE wh_location
|
||||
SET warehouse_id = @return_keep_id
|
||||
WHERE warehouse_id IN (
|
||||
SELECT duplicate_return_warehouse.id
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM wh_warehouse
|
||||
WHERE warehouse_type = 'RETURN'
|
||||
AND id <> @return_keep_id
|
||||
) AS duplicate_return_warehouse
|
||||
);
|
||||
|
||||
UPDATE wh_location
|
||||
SET is_default = CASE WHEN id = @return_default_location_id THEN 1 ELSE 0 END
|
||||
WHERE warehouse_id = @return_keep_id;
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET warehouse_id = @return_keep_id,
|
||||
location_id = COALESCE(location_id, @return_default_location_id)
|
||||
WHERE warehouse_id IN (
|
||||
SELECT duplicate_return_warehouse.id
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM wh_warehouse
|
||||
WHERE warehouse_type = 'RETURN'
|
||||
AND id <> @return_keep_id
|
||||
) AS duplicate_return_warehouse
|
||||
);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_return_balance_merge;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp_return_balance_merge AS
|
||||
SELECT
|
||||
sb.id AS old_balance_id,
|
||||
sb.item_id AS item_id,
|
||||
@return_keep_id AS target_warehouse_id,
|
||||
COALESCE(sb.location_id, @return_default_location_id) AS target_location_id,
|
||||
sb.qty_on_hand AS qty_on_hand,
|
||||
sb.weight_on_hand_kg AS weight_on_hand_kg,
|
||||
sb.qty_available AS qty_available,
|
||||
sb.weight_available_kg AS weight_available_kg,
|
||||
sb.qty_allocated AS qty_allocated,
|
||||
sb.weight_allocated_kg AS weight_allocated_kg,
|
||||
sb.avg_unit_cost AS avg_unit_cost
|
||||
FROM wh_stock_balance sb
|
||||
JOIN wh_warehouse duplicate_warehouse ON duplicate_warehouse.id = sb.warehouse_id
|
||||
WHERE duplicate_warehouse.warehouse_type = 'RETURN'
|
||||
AND duplicate_warehouse.id <> @return_keep_id;
|
||||
|
||||
INSERT INTO wh_stock_balance (
|
||||
item_id,
|
||||
warehouse_id,
|
||||
location_id,
|
||||
qty_on_hand,
|
||||
weight_on_hand_kg,
|
||||
qty_available,
|
||||
weight_available_kg,
|
||||
qty_allocated,
|
||||
weight_allocated_kg,
|
||||
avg_unit_cost
|
||||
)
|
||||
SELECT
|
||||
item_id,
|
||||
target_warehouse_id,
|
||||
target_location_id,
|
||||
SUM(qty_on_hand),
|
||||
SUM(weight_on_hand_kg),
|
||||
SUM(qty_available),
|
||||
SUM(weight_available_kg),
|
||||
SUM(qty_allocated),
|
||||
SUM(weight_allocated_kg),
|
||||
CASE
|
||||
WHEN SUM(weight_on_hand_kg) > 0 THEN SUM(avg_unit_cost * weight_on_hand_kg) / SUM(weight_on_hand_kg)
|
||||
ELSE MAX(avg_unit_cost)
|
||||
END
|
||||
FROM tmp_return_balance_merge
|
||||
GROUP BY item_id, target_warehouse_id, target_location_id
|
||||
ON DUPLICATE KEY UPDATE
|
||||
qty_on_hand = wh_stock_balance.qty_on_hand + VALUES(qty_on_hand),
|
||||
weight_on_hand_kg = wh_stock_balance.weight_on_hand_kg + VALUES(weight_on_hand_kg),
|
||||
qty_available = wh_stock_balance.qty_available + VALUES(qty_available),
|
||||
weight_available_kg = wh_stock_balance.weight_available_kg + VALUES(weight_available_kg),
|
||||
qty_allocated = wh_stock_balance.qty_allocated + VALUES(qty_allocated),
|
||||
weight_allocated_kg = wh_stock_balance.weight_allocated_kg + VALUES(weight_allocated_kg),
|
||||
avg_unit_cost = CASE
|
||||
WHEN wh_stock_balance.weight_on_hand_kg + VALUES(weight_on_hand_kg) > 0
|
||||
THEN (
|
||||
wh_stock_balance.avg_unit_cost * wh_stock_balance.weight_on_hand_kg
|
||||
+ VALUES(avg_unit_cost) * VALUES(weight_on_hand_kg)
|
||||
) / (wh_stock_balance.weight_on_hand_kg + VALUES(weight_on_hand_kg))
|
||||
ELSE VALUES(avg_unit_cost)
|
||||
END;
|
||||
|
||||
DELETE FROM wh_stock_balance
|
||||
WHERE id IN (SELECT old_balance_id FROM tmp_return_balance_merge);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_return_balance_merge;
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET warehouse_id = @return_keep_id,
|
||||
location_id = COALESCE(location_id, @return_default_location_id)
|
||||
WHERE warehouse_id IN (
|
||||
SELECT duplicate_return_warehouse.id
|
||||
FROM (
|
||||
SELECT id
|
||||
FROM wh_warehouse
|
||||
WHERE warehouse_type = 'RETURN'
|
||||
AND id <> @return_keep_id
|
||||
) AS duplicate_return_warehouse
|
||||
);
|
||||
|
||||
UPDATE wh_warehouse
|
||||
SET warehouse_type = 'RETURN_MERGED',
|
||||
status = 'INACTIVE',
|
||||
remark = LEFT(CONCAT(COALESCE(remark, ''), ';已由退货库补丁合并到WH-RETURN-01'), 255)
|
||||
WHERE warehouse_type = 'RETURN'
|
||||
AND id <> @return_keep_id;
|
||||
|
||||
UPDATE wh_location
|
||||
SET location_name = '退货暂存位',
|
||||
zone_name = 'F区',
|
||||
is_default = 1,
|
||||
is_locked = 0,
|
||||
status = 'ACTIVE',
|
||||
remark = '退货库默认库位'
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-RETURN-01')
|
||||
AND location_code = 'RTN-F-01';
|
||||
|
||||
UPDATE wh_location
|
||||
SET is_default = CASE WHEN location_code = 'RTN-F-01' THEN 1 ELSE 0 END
|
||||
WHERE warehouse_id = @return_keep_id;
|
||||
|
||||
SET @has_delivery_item_id := (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'rt_return_item'
|
||||
AND COLUMN_NAME = 'delivery_item_id'
|
||||
);
|
||||
|
||||
SET @add_delivery_item_id_sql := IF(
|
||||
@has_delivery_item_id = 0,
|
||||
'ALTER TABLE rt_return_item ADD COLUMN delivery_item_id BIGINT NULL AFTER sales_order_item_id',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE add_delivery_item_id_stmt FROM @add_delivery_item_id_sql;
|
||||
EXECUTE add_delivery_item_id_stmt;
|
||||
DEALLOCATE PREPARE add_delivery_item_id_stmt;
|
||||
|
||||
SET @has_return_delivery_item_idx := (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'rt_return_item'
|
||||
AND INDEX_NAME = 'idx_rt_return_item_delivery_item'
|
||||
);
|
||||
|
||||
SET @add_return_delivery_item_idx_sql := IF(
|
||||
@has_return_delivery_item_idx = 0,
|
||||
'ALTER TABLE rt_return_item ADD KEY idx_rt_return_item_delivery_item (delivery_item_id)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE add_return_delivery_item_idx_stmt FROM @add_return_delivery_item_idx_sql;
|
||||
EXECUTE add_return_delivery_item_idx_stmt;
|
||||
DEALLOCATE PREPARE add_return_delivery_item_idx_stmt;
|
||||
@@ -0,0 +1,46 @@
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-SCRAP-01', '废料库', 'SCRAP', NULL, 'ACTIVE', '生产废料、边角料、委外废料、报废品等废料库存'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01');
|
||||
|
||||
UPDATE wh_warehouse
|
||||
SET warehouse_name = '废料库',
|
||||
warehouse_type = 'SCRAP',
|
||||
status = 'ACTIVE',
|
||||
remark = '生产废料、边角料、委外废料、报废品等废料库存'
|
||||
WHERE warehouse_code = 'WH-SCRAP-01';
|
||||
|
||||
INSERT INTO wh_location (
|
||||
warehouse_id,
|
||||
location_code,
|
||||
location_name,
|
||||
zone_name,
|
||||
is_default,
|
||||
is_locked,
|
||||
status,
|
||||
remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01'),
|
||||
'SCR-E-01',
|
||||
'废料暂存位',
|
||||
'E区',
|
||||
1,
|
||||
0,
|
||||
'ACTIVE',
|
||||
'废料库默认库位'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01')
|
||||
AND location_code = 'SCR-E-01'
|
||||
);
|
||||
|
||||
UPDATE wh_location
|
||||
SET location_name = '废料暂存位',
|
||||
zone_name = 'E区',
|
||||
is_default = 1,
|
||||
is_locked = 0,
|
||||
status = 'ACTIVE',
|
||||
remark = '废料库默认库位'
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01')
|
||||
AND location_code = 'SCR-E-01';
|
||||
@@ -0,0 +1,49 @@
|
||||
CREATE TABLE IF NOT EXISTS wh_special_adjustment (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
adjustment_no VARCHAR(50) NOT NULL,
|
||||
warehouse_id BIGINT NOT NULL,
|
||||
warehouse_type VARCHAR(32) NOT NULL,
|
||||
direction VARCHAR(32) NOT NULL,
|
||||
reason VARCHAR(1000) NOT NULL,
|
||||
status VARCHAR(32) NOT NULL,
|
||||
operator_user_id BIGINT NULL,
|
||||
adjusted_at DATETIME NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_wh_special_adjustment_no (adjustment_no),
|
||||
KEY idx_wh_special_adjustment_warehouse (warehouse_id, adjusted_at),
|
||||
KEY idx_wh_special_adjustment_direction (direction, adjusted_at),
|
||||
CONSTRAINT fk_special_adjustment_warehouse FOREIGN KEY (warehouse_id) REFERENCES wh_warehouse(id),
|
||||
CONSTRAINT fk_special_adjustment_operator FOREIGN KEY (operator_user_id) REFERENCES sys_user(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wh_special_adjustment_line (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
adjustment_id BIGINT NOT NULL,
|
||||
line_no INT NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
warehouse_id BIGINT NOT NULL,
|
||||
location_id BIGINT NULL,
|
||||
lot_id BIGINT NOT NULL,
|
||||
inventory_txn_id BIGINT NULL,
|
||||
before_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
change_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
after_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
before_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
change_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
after_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0,
|
||||
line_reason VARCHAR(1000) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_wh_special_adjustment_line_adjustment (adjustment_id),
|
||||
KEY idx_wh_special_adjustment_line_item (item_id),
|
||||
KEY idx_wh_special_adjustment_line_lot (lot_id),
|
||||
KEY idx_wh_special_adjustment_line_txn (inventory_txn_id),
|
||||
CONSTRAINT fk_special_adjustment_line_adjustment FOREIGN KEY (adjustment_id) REFERENCES wh_special_adjustment(id),
|
||||
CONSTRAINT fk_special_adjustment_line_item FOREIGN KEY (item_id) REFERENCES md_item(id),
|
||||
CONSTRAINT fk_special_adjustment_line_warehouse FOREIGN KEY (warehouse_id) REFERENCES wh_warehouse(id),
|
||||
CONSTRAINT fk_special_adjustment_line_location FOREIGN KEY (location_id) REFERENCES wh_location(id),
|
||||
CONSTRAINT fk_special_adjustment_line_lot FOREIGN KEY (lot_id) REFERENCES wh_stock_lot(id),
|
||||
CONSTRAINT fk_special_adjustment_line_inventory_txn FOREIGN KEY (inventory_txn_id) REFERENCES wh_inventory_txn(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,98 @@
|
||||
CREATE TABLE IF NOT EXISTS wh_stocktake (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stocktake_no VARCHAR(50) NOT NULL UNIQUE,
|
||||
status VARCHAR(32) NOT NULL,
|
||||
started_by_user_id BIGINT NULL,
|
||||
imported_by_user_id BIGINT NULL,
|
||||
confirmed_by_user_id BIGINT NULL,
|
||||
canceled_by_user_id BIGINT NULL,
|
||||
started_at DATETIME NOT NULL,
|
||||
exported_at DATETIME NULL,
|
||||
imported_at DATETIME NULL,
|
||||
confirmed_at DATETIME NULL,
|
||||
canceled_at DATETIME NULL,
|
||||
remark VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_wh_stocktake_status (status),
|
||||
INDEX idx_wh_stocktake_started_at (started_at)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wh_stocktake_warehouse (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stocktake_id BIGINT NOT NULL,
|
||||
warehouse_id BIGINT NOT NULL,
|
||||
warehouse_type VARCHAR(32) NOT NULL,
|
||||
warehouse_name VARCHAR(100) NOT NULL,
|
||||
status VARCHAR(32) NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_wh_stocktake_warehouse_stocktake (stocktake_id),
|
||||
INDEX idx_wh_stocktake_warehouse_lock (warehouse_id, status),
|
||||
CONSTRAINT fk_stocktake_warehouse_stocktake FOREIGN KEY (stocktake_id) REFERENCES wh_stocktake(id),
|
||||
CONSTRAINT fk_stocktake_warehouse_warehouse FOREIGN KEY (warehouse_id) REFERENCES wh_warehouse(id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wh_stocktake_line (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stocktake_id BIGINT NOT NULL,
|
||||
stocktake_warehouse_id BIGINT NULL,
|
||||
line_no INT NOT NULL,
|
||||
warehouse_id BIGINT NOT NULL,
|
||||
warehouse_name VARCHAR(100) NOT NULL,
|
||||
warehouse_type VARCHAR(32) NOT NULL,
|
||||
location_id BIGINT NULL,
|
||||
location_name VARCHAR(100) NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
item_code VARCHAR(50) NOT NULL,
|
||||
item_name VARCHAR(200) NOT NULL,
|
||||
item_type VARCHAR(32) NOT NULL,
|
||||
lot_id BIGINT NULL,
|
||||
lot_no VARCHAR(80) NULL,
|
||||
source_material_sub_batch_no VARCHAR(80) NULL,
|
||||
snapshot_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
snapshot_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
snapshot_unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0,
|
||||
counted_qty DECIMAL(18,6) NULL,
|
||||
counted_weight_kg DECIMAL(18,6) NULL,
|
||||
diff_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
diff_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
diff_amount DECIMAL(18,2) NOT NULL DEFAULT 0,
|
||||
diff_type VARCHAR(32) NOT NULL,
|
||||
row_status VARCHAR(32) NOT NULL,
|
||||
error_message VARCHAR(500) NULL,
|
||||
remark VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_wh_stocktake_line_stocktake (stocktake_id),
|
||||
INDEX idx_wh_stocktake_line_lot (lot_id),
|
||||
INDEX idx_wh_stocktake_line_diff (diff_type, row_status),
|
||||
CONSTRAINT fk_stocktake_line_stocktake FOREIGN KEY (stocktake_id) REFERENCES wh_stocktake(id),
|
||||
CONSTRAINT fk_stocktake_line_warehouse FOREIGN KEY (warehouse_id) REFERENCES wh_warehouse(id),
|
||||
CONSTRAINT fk_stocktake_line_item FOREIGN KEY (item_id) REFERENCES md_item(id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wh_stocktake_adjustment (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stocktake_id BIGINT NOT NULL,
|
||||
stocktake_line_id BIGINT NOT NULL,
|
||||
warehouse_id BIGINT NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
lot_id BIGINT NULL,
|
||||
adjustment_lot_id BIGINT NULL,
|
||||
inventory_txn_id BIGINT NULL,
|
||||
adjustment_type VARCHAR(32) NOT NULL,
|
||||
before_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
after_qty DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
before_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
after_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
qty_change DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
weight_change_kg DECIMAL(18,6) NOT NULL DEFAULT 0,
|
||||
unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0,
|
||||
amount DECIMAL(18,2) NOT NULL DEFAULT 0,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_wh_stocktake_adjustment_stocktake (stocktake_id),
|
||||
CONSTRAINT fk_stocktake_adjustment_stocktake FOREIGN KEY (stocktake_id) REFERENCES wh_stocktake(id),
|
||||
CONSTRAINT fk_stocktake_adjustment_line FOREIGN KEY (stocktake_line_id) REFERENCES wh_stocktake_line(id)
|
||||
);
|
||||
@@ -0,0 +1,51 @@
|
||||
CREATE TABLE IF NOT EXISTS sys_broadcast_message (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
title VARCHAR(100) NOT NULL COMMENT '广播标题',
|
||||
content VARCHAR(500) NOT NULL COMMENT '广播内容',
|
||||
tone VARCHAR(32) NOT NULL DEFAULT 'INFO' COMMENT '提示类型:INFO/SUCCESS/WARNING/DANGER',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE/PAUSED',
|
||||
starts_at DATETIME NULL COMMENT '开始展示时间',
|
||||
ends_at DATETIME NULL COMMENT '结束展示时间',
|
||||
sort_no INT NOT NULL DEFAULT 0 COMMENT '排序号,越大越优先',
|
||||
created_by BIGINT NULL COMMENT '创建用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
KEY idx_broadcast_status_time (status, starts_at, ends_at),
|
||||
CONSTRAINT fk_broadcast_created_by FOREIGN KEY (created_by) REFERENCES sys_user(id)
|
||||
) ENGINE=InnoDB COMMENT='系统广播消息';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sys_ai_assistant_config (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
assistant_name VARCHAR(100) NOT NULL DEFAULT '嘉恒工艺助手' COMMENT '助手名称',
|
||||
provider_name VARCHAR(100) NULL COMMENT 'LLM供应商名称',
|
||||
api_base_url VARCHAR(255) NULL COMMENT 'LLM API基础地址',
|
||||
api_key VARCHAR(512) NULL COMMENT 'LLM API密钥',
|
||||
model_name VARCHAR(100) NULL COMMENT '模型名称',
|
||||
temperature DECIMAL(6,3) NOT NULL DEFAULT 0.300 COMMENT '温度参数',
|
||||
system_prompt TEXT NULL COMMENT '新建对话系统提示词',
|
||||
enabled TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否启用真实LLM',
|
||||
created_by BIGINT NULL COMMENT '创建用户ID',
|
||||
updated_by BIGINT NULL COMMENT '更新用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
CONSTRAINT fk_ai_config_created_by FOREIGN KEY (created_by) REFERENCES sys_user(id),
|
||||
CONSTRAINT fk_ai_config_updated_by FOREIGN KEY (updated_by) REFERENCES sys_user(id)
|
||||
) ENGINE=InnoDB COMMENT='AI助手配置';
|
||||
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT 'MENU_SYSTEM_EXTENSION', '系统拓展菜单', 'SYSTEM_EXTENSION', 'VIEW', 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE permission_code = 'MENU_SYSTEM_EXTENSION');
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT r.id, p.id
|
||||
FROM sys_role r
|
||||
JOIN sys_permission p ON p.permission_code = 'MENU_SYSTEM_EXTENSION'
|
||||
LEFT JOIN sys_role_permission existing ON existing.role_id = r.id AND existing.permission_id = p.id
|
||||
WHERE r.role_code = 'ADMIN'
|
||||
AND existing.id IS NULL;
|
||||
|
||||
INSERT INTO sys_broadcast_message (title, content, tone, status, sort_no)
|
||||
SELECT '系统提示', '系统拓展模块已启用,后续通知会在右上角喇叭横幅展示。', 'INFO', 'ACTIVE', 10
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_broadcast_message);
|
||||
@@ -0,0 +1,88 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SET @schema_name := DATABASE();
|
||||
|
||||
SET @sql := (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = @schema_name
|
||||
AND table_name = 'sys_department'
|
||||
AND column_name = 'org_node_type'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE sys_department ADD COLUMN org_node_type VARCHAR(32) NOT NULL DEFAULT ''DEPARTMENT'' COMMENT ''组织节点类型:COMPANY/BRANCH/DEPARTMENT'' AFTER parent_id'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = @schema_name
|
||||
AND table_name = 'sys_department'
|
||||
AND column_name = 'manager_employee_id'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE sys_department ADD COLUMN manager_employee_id BIGINT NULL COMMENT ''负责人员工ID'' AFTER manager_name'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql := (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @schema_name
|
||||
AND table_name = 'sys_department'
|
||||
AND index_name = 'idx_department_parent_sort'
|
||||
),
|
||||
'SELECT 1',
|
||||
'CREATE INDEX idx_department_parent_sort ON sys_department(parent_id, sort_no, id)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT 'MENU_SYSTEM_PERMISSION', '系统权限管理菜单', 'SYSTEM_PERMISSION', 'VIEW', 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE permission_code = 'MENU_SYSTEM_PERMISSION');
|
||||
|
||||
UPDATE sys_role
|
||||
SET role_name = '超级管理员', remark = '系统全局权限、角色、人员账号维护'
|
||||
WHERE role_code = 'ADMIN';
|
||||
|
||||
UPDATE sys_role
|
||||
SET role_name = '采购专员', remark = '供应商、采购订单、到货和采购相关库存查询'
|
||||
WHERE role_code = 'PURCHASER';
|
||||
|
||||
UPDATE sys_role
|
||||
SET role_name = '仓库管理人员', remark = '到货、质检、嘉恒仓库、发货台账相关作业'
|
||||
WHERE role_code = 'WAREHOUSE';
|
||||
|
||||
UPDATE sys_role
|
||||
SET role_name = '销售人员', remark = '客户、销售订单、发货台账查询与协同'
|
||||
WHERE role_code = 'SALES';
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT r.id, p.id
|
||||
FROM sys_role r
|
||||
JOIN sys_permission p ON p.permission_code IN ('MENU_SYSTEM_PERMISSION', 'MENU_SYSTEM_EXTENSION')
|
||||
LEFT JOIN sys_role_permission existing ON existing.role_id = r.id AND existing.permission_id = p.id
|
||||
WHERE r.role_code = 'ADMIN' AND existing.id IS NULL;
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,43 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sys_org_manager_binding (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
dept_id BIGINT NOT NULL COMMENT '组织脑图节点ID',
|
||||
employee_id BIGINT NOT NULL COMMENT '主管人员ID',
|
||||
sort_no INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_org_manager_binding (dept_id, employee_id),
|
||||
KEY idx_org_manager_binding_dept (dept_id, sort_no, id),
|
||||
KEY idx_org_manager_binding_employee (employee_id),
|
||||
CONSTRAINT fk_org_manager_binding_dept FOREIGN KEY (dept_id) REFERENCES sys_department(id),
|
||||
CONSTRAINT fk_org_manager_binding_employee FOREIGN KEY (employee_id) REFERENCES hr_employee(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统权限组织脑图主管绑定表';
|
||||
|
||||
INSERT INTO sys_org_manager_binding (
|
||||
dept_id,
|
||||
employee_id,
|
||||
sort_no,
|
||||
status
|
||||
)
|
||||
SELECT
|
||||
d.id,
|
||||
d.manager_employee_id,
|
||||
1,
|
||||
'ACTIVE'
|
||||
FROM sys_department d
|
||||
WHERE d.manager_employee_id IS NOT NULL
|
||||
AND EXISTS (SELECT 1 FROM hr_employee e WHERE e.id = d.manager_employee_id)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys_org_manager_binding b
|
||||
WHERE b.dept_id = d.id
|
||||
AND b.employee_id = d.manager_employee_id
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,50 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sys_org_employee_binding (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
dept_id BIGINT NOT NULL COMMENT '组织脑图节点ID',
|
||||
employee_id BIGINT NOT NULL COMMENT '人员ID',
|
||||
sort_no INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_org_employee_binding (dept_id, employee_id),
|
||||
KEY idx_org_employee_binding_dept (dept_id, sort_no, id),
|
||||
KEY idx_org_employee_binding_employee (employee_id),
|
||||
CONSTRAINT fk_org_employee_binding_dept FOREIGN KEY (dept_id) REFERENCES sys_department(id),
|
||||
CONSTRAINT fk_org_employee_binding_employee FOREIGN KEY (employee_id) REFERENCES hr_employee(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统权限组织脑图人员绑定表';
|
||||
|
||||
INSERT INTO sys_department (
|
||||
dept_code,
|
||||
dept_name,
|
||||
parent_id,
|
||||
org_node_type,
|
||||
dept_type,
|
||||
manager_name,
|
||||
manager_employee_id,
|
||||
status,
|
||||
sort_no,
|
||||
remark
|
||||
)
|
||||
SELECT
|
||||
'ORG_ROOT',
|
||||
'总公司',
|
||||
NULL,
|
||||
'COMPANY',
|
||||
'ADMIN',
|
||||
NULL,
|
||||
NULL,
|
||||
'ACTIVE',
|
||||
0,
|
||||
'系统权限管理组织脑图根节点'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_department WHERE dept_code = 'ORG_ROOT'
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,223 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- 垃圾桶垫默认 BOM
|
||||
INSERT INTO md_bom (
|
||||
bom_code, product_item_id, version_no, is_default, status, effective_date, expire_date, remark
|
||||
)
|
||||
SELECT
|
||||
'BOM-BT-002',
|
||||
(SELECT id FROM md_item WHERE item_code = 'FG-BT-002'),
|
||||
'V1.0', 1, 'ACTIVE', CURRENT_DATE(), NULL,
|
||||
'垃圾桶垫默认BOM:单件净重1.6kg,按SAP440钢板毛重1.82kg计入MRP'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_bom
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
);
|
||||
|
||||
INSERT INTO md_bom_item (
|
||||
bom_id, seq_no, material_item_id, usage_type, qty_per_piece, net_weight_per_piece_kg,
|
||||
gross_weight_per_piece_kg, loss_rate, issue_over_tolerance_rate, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_bom WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
10,
|
||||
(SELECT id FROM md_item WHERE item_code = 'RM-SAP440-500600-2.5'),
|
||||
'WEIGHT', 1.000000, 1.600000, 1.820000, 0.1375, 0.0200,
|
||||
'垃圾桶垫按SAP440钢板计料;MRP按1.82kg/件计算,采购仍按2吨倍数向上取整'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_bom_item
|
||||
WHERE bom_id = (
|
||||
SELECT id FROM md_bom
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 10
|
||||
);
|
||||
|
||||
-- 垃圾桶垫默认工艺路线
|
||||
INSERT INTO md_process_route (
|
||||
route_code, route_name, product_item_id, version_no, is_default, status, effective_date, expire_date, remark
|
||||
)
|
||||
SELECT
|
||||
'ROUTE-BT-002', '垃圾桶垫标准工艺路线',
|
||||
(SELECT id FROM md_item WHERE item_code = 'FG-BT-002'),
|
||||
'V1.0', 1, 'ACTIVE', CURRENT_DATE(), NULL,
|
||||
'适用于垃圾桶垫的默认冲压件六道工序路线'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
10,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-KP'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-KP-01'),
|
||||
'开平',
|
||||
12.00, 4.00, 0.08, 0.10, 0.00, 0.0030, 1, 0, 'ACTIVE', '垃圾桶垫板材整平与下料准备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route_operation
|
||||
WHERE route_id = (
|
||||
SELECT id FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 10
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
20,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-CY'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-CY-01'),
|
||||
'冲压',
|
||||
20.00, 6.00, 0.18, 0.24, 0.00, 0.0150, 1, 1, 'ACTIVE', '垃圾桶垫主成形工序,重点监控毛边与裂纹'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route_operation
|
||||
WHERE route_id = (
|
||||
SELECT id FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 20
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
30,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-MC'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-MC-01'),
|
||||
'去毛刺',
|
||||
10.00, 4.00, 0.06, 0.05, 0.00, 0.0040, 1, 0, 'ACTIVE', '清理冲压毛边与锐边'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route_operation
|
||||
WHERE route_id = (
|
||||
SELECT id FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 30
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
40,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-ZW'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-ZW-01'),
|
||||
'折弯',
|
||||
14.00, 5.00, 0.12, 0.12, 0.00, 0.0060, 1, 1, 'ACTIVE', '局部折边成形,控制角度一致性'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route_operation
|
||||
WHERE route_id = (
|
||||
SELECT id FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 40
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
50,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-HJ'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-HJ-01'),
|
||||
'焊接',
|
||||
18.00, 8.00, 0.20, 0.10, 0.00, 0.0050, 1, 1, 'ACTIVE', '必要焊点补强与外观控制'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route_operation
|
||||
WHERE route_id = (
|
||||
SELECT id FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 50
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002') AND is_default = 1 AND status = 'ACTIVE' ORDER BY id DESC LIMIT 1),
|
||||
60,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-QA'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-QA-01'),
|
||||
'检验包装',
|
||||
8.00, 6.00, 0.09, 0.02, 0.00, 0.0020, 1, 1, 'ACTIVE', '终检确认外观、尺寸、包装完整'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM md_process_route_operation
|
||||
WHERE route_id = (
|
||||
SELECT id FROM md_process_route
|
||||
WHERE product_item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-002')
|
||||
AND is_default = 1
|
||||
AND status = 'ACTIVE'
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
AND seq_no = 60
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,801 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 已建库后补充字段注释脚本
|
||||
-- 执行前请先在测试库验证
|
||||
|
||||
ALTER TABLE sys_department
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN dept_code VARCHAR(50) NOT NULL COMMENT '部门编码',
|
||||
MODIFY COLUMN dept_name VARCHAR(100) NOT NULL COMMENT '部门名称',
|
||||
MODIFY COLUMN parent_id BIGINT NULL COMMENT '上级ID',
|
||||
MODIFY COLUMN dept_type VARCHAR(32) NOT NULL COMMENT '部门类型:ADMIN/SALES/PURCHASE/WAREHOUSE/PRODUCTION/FINANCE/EQUIPMENT',
|
||||
MODIFY COLUMN manager_name VARCHAR(100) NULL COMMENT '负责人姓名',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN sort_no INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE hr_employee
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN employee_code VARCHAR(50) NOT NULL COMMENT '员工编码',
|
||||
MODIFY COLUMN employee_name VARCHAR(100) NOT NULL COMMENT '员工姓名',
|
||||
MODIFY COLUMN dept_id BIGINT NOT NULL COMMENT '部门ID',
|
||||
MODIFY COLUMN mobile VARCHAR(30) NULL COMMENT '手机号',
|
||||
MODIFY COLUMN gender VARCHAR(16) NULL COMMENT '性别',
|
||||
MODIFY COLUMN hire_date DATE NULL COMMENT '入职日期',
|
||||
MODIFY COLUMN job_title VARCHAR(100) NULL COMMENT '岗位名称',
|
||||
MODIFY COLUMN shift_code VARCHAR(32) NULL COMMENT '班次编码',
|
||||
MODIFY COLUMN manager_employee_id BIGINT NULL COMMENT '上级员工ID',
|
||||
MODIFY COLUMN is_operator TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否操作工',
|
||||
MODIFY COLUMN is_workshop_staff TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否车间人员',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE sys_role
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN role_code VARCHAR(50) NOT NULL COMMENT '角色编码',
|
||||
MODIFY COLUMN role_name VARCHAR(100) NOT NULL COMMENT '角色名称',
|
||||
MODIFY COLUMN role_scope VARCHAR(32) NOT NULL DEFAULT 'SYSTEM' COMMENT '角色范围',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE sys_permission
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN permission_code VARCHAR(100) NOT NULL COMMENT '权限编码',
|
||||
MODIFY COLUMN permission_name VARCHAR(100) NOT NULL COMMENT '权限名称',
|
||||
MODIFY COLUMN module_code VARCHAR(50) NOT NULL COMMENT '模块编码',
|
||||
MODIFY COLUMN action_code VARCHAR(50) NOT NULL COMMENT '操作编码',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE sys_role_permission
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN role_id BIGINT NOT NULL COMMENT '角色ID',
|
||||
MODIFY COLUMN permission_id BIGINT NOT NULL COMMENT '权限ID',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';
|
||||
|
||||
ALTER TABLE sys_user
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN username VARCHAR(50) NOT NULL COMMENT '登录账号',
|
||||
MODIFY COLUMN password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希',
|
||||
MODIFY COLUMN employee_id BIGINT NOT NULL COMMENT '员工ID',
|
||||
MODIFY COLUMN dept_id BIGINT NOT NULL COMMENT '部门ID',
|
||||
MODIFY COLUMN nickname VARCHAR(100) NULL COMMENT '昵称',
|
||||
MODIFY COLUMN email VARCHAR(100) NULL COMMENT '邮箱',
|
||||
MODIFY COLUMN is_super_admin TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否超级管理员',
|
||||
MODIFY COLUMN last_login_at DATETIME NULL COMMENT '最后登录时间',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE sys_user_role
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN user_id BIGINT NOT NULL COMMENT '用户ID',
|
||||
MODIFY COLUMN role_id BIGINT NOT NULL COMMENT '角色ID',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';
|
||||
|
||||
ALTER TABLE md_unit
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN unit_code VARCHAR(50) NOT NULL COMMENT '单位编码',
|
||||
MODIFY COLUMN unit_name VARCHAR(50) NOT NULL COMMENT '单位名称',
|
||||
MODIFY COLUMN precision_digits INT NOT NULL DEFAULT 3 COMMENT '小数精度位数',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_customer
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN customer_code VARCHAR(50) NOT NULL COMMENT '客户编码',
|
||||
MODIFY COLUMN customer_name VARCHAR(200) NOT NULL COMMENT '客户名称',
|
||||
MODIFY COLUMN short_name VARCHAR(100) NULL COMMENT '简称',
|
||||
MODIFY COLUMN contact_name VARCHAR(100) NULL COMMENT '联系人',
|
||||
MODIFY COLUMN contact_phone VARCHAR(50) NULL COMMENT '联系电话',
|
||||
MODIFY COLUMN address VARCHAR(255) NULL COMMENT '地址',
|
||||
MODIFY COLUMN tax_no VARCHAR(100) NULL COMMENT '税号',
|
||||
MODIFY COLUMN credit_days INT NOT NULL DEFAULT 0 COMMENT '账期天数',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_supplier
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN supplier_code VARCHAR(50) NOT NULL COMMENT '供应商编码',
|
||||
MODIFY COLUMN supplier_name VARCHAR(200) NOT NULL COMMENT '供应商名称',
|
||||
MODIFY COLUMN short_name VARCHAR(100) NULL COMMENT '简称',
|
||||
MODIFY COLUMN contact_name VARCHAR(100) NULL COMMENT '联系人',
|
||||
MODIFY COLUMN contact_phone VARCHAR(50) NULL COMMENT '联系电话',
|
||||
MODIFY COLUMN address VARCHAR(255) NULL COMMENT '地址',
|
||||
MODIFY COLUMN lead_time_days INT NOT NULL DEFAULT 0 COMMENT '采购提前期天数',
|
||||
MODIFY COLUMN default_tax_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '默认税率',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_item_category
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN category_code VARCHAR(50) NOT NULL COMMENT '分类编码',
|
||||
MODIFY COLUMN category_name VARCHAR(100) NOT NULL COMMENT '分类名称',
|
||||
MODIFY COLUMN parent_id BIGINT NULL COMMENT '上级ID',
|
||||
MODIFY COLUMN item_type VARCHAR(32) NOT NULL COMMENT '物料类型',
|
||||
MODIFY COLUMN sort_no INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN item_code VARCHAR(50) NOT NULL COMMENT '物料编码',
|
||||
MODIFY COLUMN item_name VARCHAR(200) NOT NULL COMMENT '物料名称',
|
||||
MODIFY COLUMN item_type VARCHAR(32) NOT NULL COMMENT '物料类型:RAW_MATERIAL/FINISHED_GOOD/SEMI_FINISHED/SCRAP/SPARE_PART',
|
||||
MODIFY COLUMN category_id BIGINT NULL COMMENT '分类ID',
|
||||
MODIFY COLUMN specification VARCHAR(200) NULL COMMENT '规格',
|
||||
MODIFY COLUMN model_no VARCHAR(100) NULL COMMENT '型号',
|
||||
MODIFY COLUMN material_type VARCHAR(100) NULL COMMENT '材料类型',
|
||||
MODIFY COLUMN material_grade VARCHAR(100) NULL COMMENT '材质牌号',
|
||||
MODIFY COLUMN length_mm DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT '长度(mm)',
|
||||
MODIFY COLUMN width_mm DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT '宽度(mm)',
|
||||
MODIFY COLUMN thickness_mm DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT '厚度(mm)',
|
||||
MODIFY COLUMN density_kg_m3 DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT '密度(kg/m3)',
|
||||
MODIFY COLUMN theoretical_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '理论重量(kg)',
|
||||
MODIFY COLUMN unit_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '实际管理用单件或单批重量',
|
||||
MODIFY COLUMN sales_unit_id BIGINT NULL COMMENT '销售单位ID',
|
||||
MODIFY COLUMN stock_unit_id BIGINT NULL COMMENT '库存单位ID',
|
||||
MODIFY COLUMN purchase_unit_id BIGINT NULL COMMENT '采购单位ID',
|
||||
MODIFY COLUMN safety_stock_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '安全库存数量',
|
||||
MODIFY COLUMN safety_stock_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '安全库存重量(kg)',
|
||||
MODIFY COLUMN scrap_sale_price DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '废料销售单价',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_material
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN item_id BIGINT NOT NULL COMMENT '物料ID',
|
||||
MODIFY COLUMN default_supplier_id BIGINT NULL COMMENT '默认供应商ID',
|
||||
MODIFY COLUMN purchase_calc_mode VARCHAR(32) NOT NULL DEFAULT 'BY_WEIGHT' COMMENT '采购计算方式',
|
||||
MODIFY COLUMN min_purchase_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '最小采购数量',
|
||||
MODIFY COLUMN purchase_multiple_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '采购倍数数量',
|
||||
MODIFY COLUMN purchase_multiple_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '采购倍数重量(kg)',
|
||||
MODIFY COLUMN lead_time_days INT NOT NULL DEFAULT 0 COMMENT '采购提前期天数',
|
||||
MODIFY COLUMN quality_rule VARCHAR(255) NULL COMMENT '质检规则',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_product
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN item_id BIGINT NOT NULL COMMENT '物料ID',
|
||||
MODIFY COLUMN drawing_no VARCHAR(100) NULL COMMENT '图号',
|
||||
MODIFY COLUMN product_family VARCHAR(100) NULL COMMENT '产品系列',
|
||||
MODIFY COLUMN version_no VARCHAR(50) NOT NULL DEFAULT 'V1.0' COMMENT '版本号',
|
||||
MODIFY COLUMN standard_output_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '标准产出数量',
|
||||
MODIFY COLUMN allowed_scrap_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '允许报废率',
|
||||
MODIFY COLUMN quality_standard VARCHAR(255) NULL COMMENT '质量标准',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_process
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN process_code VARCHAR(50) NOT NULL COMMENT '工序编码',
|
||||
MODIFY COLUMN process_name VARCHAR(100) NOT NULL COMMENT '工序名称',
|
||||
MODIFY COLUMN process_type VARCHAR(50) NOT NULL COMMENT '工序类型',
|
||||
MODIFY COLUMN is_report_required TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否必须报工',
|
||||
MODIFY COLUMN is_quality_gate TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否质量关卡',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_work_center
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN center_code VARCHAR(50) NOT NULL COMMENT '工作中心编码',
|
||||
MODIFY COLUMN center_name VARCHAR(100) NOT NULL COMMENT '工作中心名称',
|
||||
MODIFY COLUMN dept_id BIGINT NOT NULL COMMENT '部门ID',
|
||||
MODIFY COLUMN center_type VARCHAR(50) NOT NULL COMMENT '工作中心类型',
|
||||
MODIFY COLUMN shift_pattern VARCHAR(50) NULL COMMENT '班制',
|
||||
MODIFY COLUMN capacity_hours_per_day DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '日产能工时',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_process_route
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN route_code VARCHAR(50) NOT NULL COMMENT '工艺路线编码',
|
||||
MODIFY COLUMN route_name VARCHAR(100) NOT NULL COMMENT '工艺路线名称',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN version_no VARCHAR(50) NOT NULL DEFAULT 'V1.0' COMMENT '版本号',
|
||||
MODIFY COLUMN is_default TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否默认',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN effective_date DATE NULL COMMENT '生效日期',
|
||||
MODIFY COLUMN expire_date DATE NULL COMMENT '失效日期',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_process_route_operation
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN route_id BIGINT NOT NULL COMMENT '工艺路线ID',
|
||||
MODIFY COLUMN seq_no INT NOT NULL COMMENT '序号',
|
||||
MODIFY COLUMN process_id BIGINT NOT NULL COMMENT '工序ID',
|
||||
MODIFY COLUMN work_center_id BIGINT NOT NULL COMMENT '工作中心ID',
|
||||
MODIFY COLUMN operation_name VARCHAR(100) NOT NULL COMMENT '工序名称',
|
||||
MODIFY COLUMN std_setup_minutes DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '标准准备时长(分钟)',
|
||||
MODIFY COLUMN std_cycle_seconds DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '标准节拍(秒/件)',
|
||||
MODIFY COLUMN std_labor_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '标准人工成本',
|
||||
MODIFY COLUMN std_machine_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '标准设备成本',
|
||||
MODIFY COLUMN std_outsource_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '标准委外成本',
|
||||
MODIFY COLUMN allowed_scrap_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '允许报废率',
|
||||
MODIFY COLUMN report_required TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否要求报工',
|
||||
MODIFY COLUMN is_key_operation TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否关键工序',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_bom
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN bom_code VARCHAR(50) NOT NULL COMMENT 'BOM编码',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN version_no VARCHAR(50) NOT NULL DEFAULT 'V1.0' COMMENT '版本号',
|
||||
MODIFY COLUMN is_default TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否默认',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN effective_date DATE NULL COMMENT '生效日期',
|
||||
MODIFY COLUMN expire_date DATE NULL COMMENT '失效日期',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE md_bom_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN bom_id BIGINT NOT NULL COMMENT 'BOM ID',
|
||||
MODIFY COLUMN seq_no INT NOT NULL COMMENT '序号',
|
||||
MODIFY COLUMN material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
MODIFY COLUMN usage_type VARCHAR(32) NOT NULL DEFAULT 'WEIGHT' COMMENT '用量类型:WEIGHT/FIXED_QTY',
|
||||
MODIFY COLUMN qty_per_piece DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '单件用量',
|
||||
MODIFY COLUMN net_weight_per_piece_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '单件净重(kg)',
|
||||
MODIFY COLUMN gross_weight_per_piece_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '单件毛重(kg)',
|
||||
MODIFY COLUMN loss_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '损耗率',
|
||||
MODIFY COLUMN issue_over_tolerance_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '领料超发容差率',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE em_equipment
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN equipment_code VARCHAR(50) NOT NULL COMMENT '设备编码',
|
||||
MODIFY COLUMN equipment_name VARCHAR(100) NOT NULL COMMENT '设备名称',
|
||||
MODIFY COLUMN category_name VARCHAR(100) NULL COMMENT '分类名称',
|
||||
MODIFY COLUMN work_center_id BIGINT NOT NULL COMMENT '工作中心ID',
|
||||
MODIFY COLUMN manufacturer VARCHAR(100) NULL COMMENT '制造商',
|
||||
MODIFY COLUMN model_no VARCHAR(100) NULL COMMENT '型号',
|
||||
MODIFY COLUMN install_date DATE NULL COMMENT '安装日期',
|
||||
MODIFY COLUMN rated_power_kw DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '额定功率(kW)',
|
||||
MODIFY COLUMN occupied_area_sqm DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '占用场地面积(平方米)',
|
||||
MODIFY COLUMN maintenance_cycle_hours DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '保养周期(小时)',
|
||||
MODIFY COLUMN last_maintenance_at DATETIME NULL COMMENT '上次保养时间',
|
||||
MODIFY COLUMN next_maintenance_at DATETIME NULL COMMENT '下次保养时间',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'IDLE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE em_maintenance_plan
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN plan_code VARCHAR(50) NOT NULL COMMENT '计划编码',
|
||||
MODIFY COLUMN equipment_id BIGINT NOT NULL COMMENT '设备ID',
|
||||
MODIFY COLUMN plan_name VARCHAR(100) NOT NULL COMMENT '计划名称',
|
||||
MODIFY COLUMN maintenance_type VARCHAR(32) NOT NULL COMMENT '保养类型',
|
||||
MODIFY COLUMN cycle_hours DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '周期小时数',
|
||||
MODIFY COLUMN cycle_days INT NOT NULL DEFAULT 0 COMMENT '周期天数',
|
||||
MODIFY COLUMN last_execute_at DATETIME NULL COMMENT '上次执行时间',
|
||||
MODIFY COLUMN next_execute_at DATETIME NULL COMMENT '下次执行时间',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE em_maintenance_order
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN order_no VARCHAR(50) NOT NULL COMMENT '单据号',
|
||||
MODIFY COLUMN equipment_id BIGINT NOT NULL COMMENT '设备ID',
|
||||
MODIFY COLUMN plan_id BIGINT NULL COMMENT '计划ID',
|
||||
MODIFY COLUMN maintenance_type VARCHAR(32) NOT NULL COMMENT '保养类型',
|
||||
MODIFY COLUMN start_time DATETIME NULL COMMENT '开始时间',
|
||||
MODIFY COLUMN end_time DATETIME NULL COMMENT '结束时间',
|
||||
MODIFY COLUMN downtime_minutes DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '停机时长(分钟)',
|
||||
MODIFY COLUMN owner_employee_id BIGINT NULL COMMENT '负责人员工ID',
|
||||
MODIFY COLUMN result_summary VARCHAR(255) NULL COMMENT '结果摘要',
|
||||
MODIFY COLUMN cost_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '成本金额',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CREATED' COMMENT '状态',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE so_sales_order
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN order_no VARCHAR(50) NOT NULL COMMENT '单据号',
|
||||
MODIFY COLUMN customer_id BIGINT NOT NULL COMMENT '客户ID',
|
||||
MODIFY COLUMN order_date DATE NOT NULL COMMENT '订单日期',
|
||||
MODIFY COLUMN promised_date DATE NULL COMMENT '承诺交期',
|
||||
MODIFY COLUMN sales_employee_id BIGINT NULL COMMENT '销售员员工ID',
|
||||
MODIFY COLUMN delivery_address VARCHAR(255) NULL COMMENT '送货地址',
|
||||
MODIFY COLUMN tax_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '税率',
|
||||
MODIFY COLUMN total_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '总金额',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE so_sales_order_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN sales_order_id BIGINT NOT NULL COMMENT '订单ID',
|
||||
MODIFY COLUMN line_no INT NOT NULL COMMENT '行号',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN customer_part_no VARCHAR(100) NULL COMMENT '客户料号',
|
||||
MODIFY COLUMN order_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '订单数量',
|
||||
MODIFY COLUMN delivered_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已发货数量',
|
||||
MODIFY COLUMN unit_price DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单价',
|
||||
MODIFY COLUMN line_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '行金额',
|
||||
MODIFY COLUMN promised_date DATE NULL COMMENT '承诺交期',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'OPEN' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE mrp_material_demand
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN demand_no VARCHAR(50) NOT NULL COMMENT '需求单号',
|
||||
MODIFY COLUMN sales_order_item_id BIGINT NOT NULL COMMENT '订单明细ID',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
MODIFY COLUMN bom_item_id BIGINT NOT NULL COMMENT 'BOM明细ID',
|
||||
MODIFY COLUMN order_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '订单数量',
|
||||
MODIFY COLUMN theoretical_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '理论重量(kg)',
|
||||
MODIFY COLUMN planned_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '计划重量(kg)',
|
||||
MODIFY COLUMN available_stock_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '可用库存重量(kg)',
|
||||
MODIFY COLUMN shortage_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '缺口重量(kg)',
|
||||
MODIFY COLUMN suggested_purchase_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '建议采购数量',
|
||||
MODIFY COLUMN suggested_purchase_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '建议采购重量(kg)',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'NEW' COMMENT '状态',
|
||||
MODIFY COLUMN generated_at DATETIME NULL COMMENT '生成时间',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE po_purchase_order
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN po_no VARCHAR(50) NOT NULL COMMENT '采购订单号',
|
||||
MODIFY COLUMN supplier_id BIGINT NOT NULL COMMENT 'SupplierID',
|
||||
MODIFY COLUMN order_date DATE NOT NULL COMMENT '订单日期',
|
||||
MODIFY COLUMN expected_date DATE NULL COMMENT '预计到货日期',
|
||||
MODIFY COLUMN purchaser_employee_id BIGINT NULL COMMENT '采购员员工ID',
|
||||
MODIFY COLUMN target_warehouse_type VARCHAR(32) NOT NULL DEFAULT 'RAW' COMMENT '目标仓库类型:RAW原材料库/AUX辅料库',
|
||||
MODIFY COLUMN tax_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '税率',
|
||||
MODIFY COLUMN total_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '总金额',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE po_purchase_order_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN purchase_order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
||||
MODIFY COLUMN line_no INT NOT NULL COMMENT '行号',
|
||||
MODIFY COLUMN material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
MODIFY COLUMN source_demand_id BIGINT NULL COMMENT '来源需求ID',
|
||||
MODIFY COLUMN order_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '订单数量',
|
||||
MODIFY COLUMN order_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '订单重量(kg)',
|
||||
MODIFY COLUMN received_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已收货数量',
|
||||
MODIFY COLUMN received_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已收货重量(kg)',
|
||||
MODIFY COLUMN unit_price DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单价',
|
||||
MODIFY COLUMN line_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '行金额',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'OPEN' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE wh_warehouse
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN warehouse_code VARCHAR(50) NOT NULL COMMENT '仓库编码',
|
||||
MODIFY COLUMN warehouse_name VARCHAR(100) NOT NULL COMMENT '仓库名称',
|
||||
MODIFY COLUMN warehouse_type VARCHAR(32) NOT NULL COMMENT '仓库类型:RAW/SEMI/FINISHED/AUX/RETURN/SCRAP',
|
||||
MODIFY COLUMN manager_employee_id BIGINT NULL COMMENT '上级员工ID',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE wh_location
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN location_code VARCHAR(50) NOT NULL COMMENT '库位编码',
|
||||
MODIFY COLUMN location_name VARCHAR(100) NOT NULL COMMENT '库位名称',
|
||||
MODIFY COLUMN zone_name VARCHAR(100) NULL COMMENT '库区名称',
|
||||
MODIFY COLUMN is_default TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否默认',
|
||||
MODIFY COLUMN is_locked TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否锁定',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE po_receipt
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN receipt_no VARCHAR(50) NOT NULL COMMENT '入库单号',
|
||||
MODIFY COLUMN purchase_order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN receipt_date DATETIME NOT NULL COMMENT '收货日期',
|
||||
MODIFY COLUMN receiver_employee_id BIGINT NULL COMMENT '接收人员工ID',
|
||||
MODIFY COLUMN supplier_delivery_no VARCHAR(100) NULL COMMENT '供应商送货单号',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'DRAFT' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE po_receipt_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN receipt_id BIGINT NOT NULL COMMENT '单据ID',
|
||||
MODIFY COLUMN line_no INT NOT NULL COMMENT '行号',
|
||||
MODIFY COLUMN purchase_order_item_id BIGINT NOT NULL COMMENT '采购订单明细ID',
|
||||
MODIFY COLUMN material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
MODIFY COLUMN location_id BIGINT NULL COMMENT '库位ID',
|
||||
MODIFY COLUMN lot_no VARCHAR(50) NOT NULL COMMENT '批次号',
|
||||
MODIFY COLUMN received_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已收货数量',
|
||||
MODIFY COLUMN received_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已收货重量(kg)',
|
||||
MODIFY COLUMN accepted_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '合格数量',
|
||||
MODIFY COLUMN accepted_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '合格重量(kg)',
|
||||
MODIFY COLUMN unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单位成本',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'PENDING_QC' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE wh_stock_lot
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN lot_no VARCHAR(50) NOT NULL COMMENT '批次号',
|
||||
MODIFY COLUMN item_id BIGINT NOT NULL COMMENT '物料ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN location_id BIGINT NULL COMMENT '库位ID',
|
||||
MODIFY COLUMN source_doc_type VARCHAR(32) NOT NULL COMMENT '来源单据类型',
|
||||
MODIFY COLUMN source_doc_id BIGINT NOT NULL COMMENT '来源单据ID',
|
||||
MODIFY COLUMN source_line_id BIGINT NULL COMMENT '来源单据行ID',
|
||||
MODIFY COLUMN inbound_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '入库数量',
|
||||
MODIFY COLUMN inbound_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '入库重量(kg)',
|
||||
MODIFY COLUMN remaining_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '剩余数量',
|
||||
MODIFY COLUMN remaining_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '剩余重量(kg)',
|
||||
MODIFY COLUMN locked_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '锁定数量',
|
||||
MODIFY COLUMN locked_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '锁定重量(kg)',
|
||||
MODIFY COLUMN unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单位成本',
|
||||
MODIFY COLUMN production_date DATE NULL COMMENT '生产日期',
|
||||
MODIFY COLUMN expire_date DATE NULL COMMENT '失效日期',
|
||||
MODIFY COLUMN quality_status VARCHAR(32) NOT NULL DEFAULT 'PASS' COMMENT '质量状态',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'AVAILABLE' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE wh_stock_balance
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN item_id BIGINT NOT NULL COMMENT '物料ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN location_id BIGINT NULL COMMENT '库位ID',
|
||||
MODIFY COLUMN qty_on_hand DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '现存数量',
|
||||
MODIFY COLUMN weight_on_hand_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '现存重量(kg)',
|
||||
MODIFY COLUMN qty_available DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '可用数量',
|
||||
MODIFY COLUMN weight_available_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '可用重量(kg)',
|
||||
MODIFY COLUMN qty_allocated DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已分配数量',
|
||||
MODIFY COLUMN weight_allocated_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已分配重量(kg)',
|
||||
MODIFY COLUMN avg_unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '平均单位成本',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE wh_inventory_txn
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN txn_no VARCHAR(50) NOT NULL COMMENT '流水号',
|
||||
MODIFY COLUMN txn_type VARCHAR(32) NOT NULL COMMENT '流水类型:PURCHASE_IN/MATERIAL_ISSUE/FG_IN/SALES_OUT/RETURN_IN/RETURN_OUT/SCRAP_OUT/PRODUCTION_SCRAP_IN/OUTSOURCING_SCRAP_IN/SCRAP_SALE_OUT/ADJUST',
|
||||
MODIFY COLUMN item_id BIGINT NOT NULL COMMENT '物料ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN location_id BIGINT NULL COMMENT '库位ID',
|
||||
MODIFY COLUMN lot_id BIGINT NULL COMMENT '批次ID',
|
||||
MODIFY COLUMN qty_change DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '数量变动',
|
||||
MODIFY COLUMN weight_change_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '重量变动(kg)',
|
||||
MODIFY COLUMN unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单位成本',
|
||||
MODIFY COLUMN amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '金额',
|
||||
MODIFY COLUMN source_doc_type VARCHAR(32) NOT NULL COMMENT '来源单据类型',
|
||||
MODIFY COLUMN source_doc_id BIGINT NOT NULL COMMENT '来源单据ID',
|
||||
MODIFY COLUMN source_line_id BIGINT NULL COMMENT '来源单据行ID',
|
||||
MODIFY COLUMN biz_time DATETIME NOT NULL COMMENT '业务时间',
|
||||
MODIFY COLUMN operator_user_id BIGINT NULL COMMENT '操作人用户ID',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_work_order
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN work_order_no VARCHAR(50) NOT NULL COMMENT '工单号',
|
||||
MODIFY COLUMN work_order_type VARCHAR(32) NOT NULL DEFAULT 'NORMAL' COMMENT '工单类型:NORMAL/REWORK',
|
||||
MODIFY COLUMN source_sales_order_item_id BIGINT NULL COMMENT '来源订单明细ID',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN route_id BIGINT NOT NULL COMMENT '工艺路线ID',
|
||||
MODIFY COLUMN bom_id BIGINT NOT NULL COMMENT 'BOM ID',
|
||||
MODIFY COLUMN planned_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '计划数量',
|
||||
MODIFY COLUMN released_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '下达数量',
|
||||
MODIFY COLUMN finished_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '完工数量',
|
||||
MODIFY COLUMN scrap_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报废数量',
|
||||
MODIFY COLUMN planned_start_time DATETIME NULL COMMENT '计划开始时间',
|
||||
MODIFY COLUMN planned_end_time DATETIME NULL COMMENT '计划结束时间',
|
||||
MODIFY COLUMN actual_start_time DATETIME NULL COMMENT '实际开始时间',
|
||||
MODIFY COLUMN actual_end_time DATETIME NULL COMMENT '实际结束时间',
|
||||
MODIFY COLUMN priority_level INT NOT NULL DEFAULT 3 COMMENT '优先级',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CREATED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_work_order_material
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN bom_item_id BIGINT NOT NULL COMMENT 'BOM明细ID',
|
||||
MODIFY COLUMN material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
MODIFY COLUMN required_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '需求数量',
|
||||
MODIFY COLUMN required_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '需求重量(kg)',
|
||||
MODIFY COLUMN issued_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已领料数量',
|
||||
MODIFY COLUMN issued_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已领料重量(kg)',
|
||||
MODIFY COLUMN returned_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已退料数量',
|
||||
MODIFY COLUMN returned_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '已退料重量(kg)',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'OPEN' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_work_order_operation
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN route_operation_id BIGINT NOT NULL COMMENT '工艺路线工序ID',
|
||||
MODIFY COLUMN seq_no INT NOT NULL COMMENT '序号',
|
||||
MODIFY COLUMN operation_name VARCHAR(100) NOT NULL COMMENT '工序名称',
|
||||
MODIFY COLUMN work_center_id BIGINT NOT NULL COMMENT '工作中心ID',
|
||||
MODIFY COLUMN planned_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '计划数量',
|
||||
MODIFY COLUMN report_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报工数量',
|
||||
MODIFY COLUMN good_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '合格数量',
|
||||
MODIFY COLUMN scrap_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报废数量',
|
||||
MODIFY COLUMN rework_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '返工数量',
|
||||
MODIFY COLUMN std_labor_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '标准人工成本',
|
||||
MODIFY COLUMN std_machine_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '标准设备成本',
|
||||
MODIFY COLUMN std_outsource_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '标准委外成本',
|
||||
MODIFY COLUMN allowed_scrap_rate DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '允许报废率',
|
||||
MODIFY COLUMN is_abnormal TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否异常',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_material_issue
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN issue_no VARCHAR(50) NOT NULL COMMENT '领料单号',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN issue_time DATETIME NOT NULL COMMENT '领料时间',
|
||||
MODIFY COLUMN issuer_employee_id BIGINT NULL COMMENT '发料人员工ID',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CREATED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_material_issue_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN material_issue_id BIGINT NOT NULL COMMENT '领料单ID',
|
||||
MODIFY COLUMN work_order_material_id BIGINT NOT NULL COMMENT '工单用料ID',
|
||||
MODIFY COLUMN material_item_id BIGINT NOT NULL COMMENT '原材料物料ID',
|
||||
MODIFY COLUMN lot_id BIGINT NOT NULL COMMENT '批次ID',
|
||||
MODIFY COLUMN location_id BIGINT NULL COMMENT '库位ID',
|
||||
MODIFY COLUMN issue_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT 'Issue数量',
|
||||
MODIFY COLUMN issue_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT 'issue_weight_kg',
|
||||
MODIFY COLUMN unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单位成本',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'POSTED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_operation_report
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN report_no VARCHAR(50) NOT NULL COMMENT '报工单号',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN work_order_operation_id BIGINT NOT NULL COMMENT '工单工序ID',
|
||||
MODIFY COLUMN employee_id BIGINT NOT NULL COMMENT '员工ID',
|
||||
MODIFY COLUMN equipment_id BIGINT NULL COMMENT '设备ID',
|
||||
MODIFY COLUMN report_source VARCHAR(32) NOT NULL DEFAULT 'MANUAL' COMMENT '报工来源:MANUAL/MINI_APP/IMPORT',
|
||||
MODIFY COLUMN shift_code VARCHAR(32) NULL COMMENT '班次编码',
|
||||
MODIFY COLUMN start_time DATETIME NOT NULL COMMENT '开始时间',
|
||||
MODIFY COLUMN end_time DATETIME NOT NULL COMMENT '结束时间',
|
||||
MODIFY COLUMN report_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报工数量',
|
||||
MODIFY COLUMN good_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '合格数量',
|
||||
MODIFY COLUMN scrap_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报废数量',
|
||||
MODIFY COLUMN rework_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '返工数量',
|
||||
MODIFY COLUMN scrap_reason VARCHAR(255) NULL COMMENT '报废原因',
|
||||
MODIFY COLUMN downtime_minutes DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '停机时长(分钟)',
|
||||
MODIFY COLUMN extra_cost_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '额外成本金额',
|
||||
MODIFY COLUMN is_abnormal TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否异常',
|
||||
MODIFY COLUMN approved_by BIGINT NULL COMMENT '审批人用户ID',
|
||||
MODIFY COLUMN approved_at DATETIME NULL COMMENT '审批时间',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_scrap_record
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN scrap_no VARCHAR(50) NOT NULL COMMENT '报废单号',
|
||||
MODIFY COLUMN report_id BIGINT NOT NULL COMMENT '报工记录ID',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN work_order_operation_id BIGINT NOT NULL COMMENT '工单工序ID',
|
||||
MODIFY COLUMN item_id BIGINT NOT NULL COMMENT '物料ID',
|
||||
MODIFY COLUMN scrap_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报废数量',
|
||||
MODIFY COLUMN scrap_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报废重量(kg)',
|
||||
MODIFY COLUMN scrap_reason VARCHAR(255) NULL COMMENT '报废原因',
|
||||
MODIFY COLUMN disposal_type VARCHAR(32) NOT NULL DEFAULT 'SCRAP' COMMENT '处置类型:SCRAP/REWORK',
|
||||
MODIFY COLUMN saleable_scrap_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '可售废料重量(kg)',
|
||||
MODIFY COLUMN scrap_cost_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '报废成本金额',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CONFIRMED' COMMENT '状态',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_completion_receipt
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN receipt_no VARCHAR(50) NOT NULL COMMENT '入库单号',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN receipt_time DATETIME NOT NULL COMMENT '入库时间',
|
||||
MODIFY COLUMN receiver_employee_id BIGINT NULL COMMENT '接收人员工ID',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CREATED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE pp_completion_receipt_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN completion_receipt_id BIGINT NOT NULL COMMENT '完工入库单ID',
|
||||
MODIFY COLUMN line_no INT NOT NULL COMMENT '行号',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN location_id BIGINT NULL COMMENT '库位ID',
|
||||
MODIFY COLUMN lot_no VARCHAR(50) NOT NULL COMMENT '批次号',
|
||||
MODIFY COLUMN receipt_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT 'Receipt数量',
|
||||
MODIFY COLUMN receipt_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT 'receipt_weight_kg',
|
||||
MODIFY COLUMN unit_cost DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单位成本',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'POSTED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE so_delivery
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN delivery_no VARCHAR(50) NOT NULL COMMENT '发货单号',
|
||||
MODIFY COLUMN sales_order_id BIGINT NOT NULL COMMENT '订单ID',
|
||||
MODIFY COLUMN warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
|
||||
MODIFY COLUMN delivery_date DATETIME NOT NULL COMMENT '发货时间',
|
||||
MODIFY COLUMN shipper_employee_id BIGINT NULL COMMENT '发货人员工ID',
|
||||
MODIFY COLUMN consignee_name VARCHAR(100) NULL COMMENT '收货人姓名',
|
||||
MODIFY COLUMN consignee_phone VARCHAR(50) NULL COMMENT '收货人电话',
|
||||
MODIFY COLUMN delivery_address VARCHAR(255) NULL COMMENT '送货地址',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CREATED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE so_delivery_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN delivery_id BIGINT NOT NULL COMMENT '发货单ID',
|
||||
MODIFY COLUMN line_no INT NOT NULL COMMENT '行号',
|
||||
MODIFY COLUMN sales_order_item_id BIGINT NOT NULL COMMENT '订单明细ID',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN lot_id BIGINT NULL COMMENT '批次ID',
|
||||
MODIFY COLUMN delivery_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '发货数量',
|
||||
MODIFY COLUMN delivery_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '发货重量(kg)',
|
||||
MODIFY COLUMN unit_price DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '单价',
|
||||
MODIFY COLUMN line_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '行金额',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'POSTED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE rt_return_order
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN return_no VARCHAR(50) NOT NULL COMMENT '退货单号',
|
||||
MODIFY COLUMN customer_id BIGINT NOT NULL COMMENT '客户ID',
|
||||
MODIFY COLUMN sales_order_id BIGINT NULL COMMENT '订单ID',
|
||||
MODIFY COLUMN delivery_id BIGINT NULL COMMENT '发货单ID',
|
||||
MODIFY COLUMN return_date DATETIME NOT NULL COMMENT '退货时间',
|
||||
MODIFY COLUMN return_reason VARCHAR(255) NULL COMMENT '退货原因',
|
||||
MODIFY COLUMN handler_employee_id BIGINT NULL COMMENT '处理人员工ID',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'CREATED' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE rt_return_item
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN return_order_id BIGINT NOT NULL COMMENT '退货单ID',
|
||||
MODIFY COLUMN line_no INT NOT NULL COMMENT '行号',
|
||||
MODIFY COLUMN sales_order_item_id BIGINT NULL COMMENT '订单明细ID',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN source_lot_id BIGINT NULL COMMENT '来源批次ID',
|
||||
MODIFY COLUMN return_qty DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '退货数量',
|
||||
MODIFY COLUMN return_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '退货重量(kg)',
|
||||
MODIFY COLUMN disposition_status VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT '处置状态',
|
||||
MODIFY COLUMN responsibility_type VARCHAR(32) NULL COMMENT '责任类型',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE rt_return_disposition
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN disposition_no VARCHAR(50) NOT NULL COMMENT '处置单号',
|
||||
MODIFY COLUMN return_item_id BIGINT NOT NULL COMMENT '退货明细ID',
|
||||
MODIFY COLUMN disposition_type VARCHAR(32) NOT NULL COMMENT '处置方式:REWORK/SCRAP',
|
||||
MODIFY COLUMN rework_work_order_id BIGINT NULL COMMENT '返工工单ID',
|
||||
MODIFY COLUMN scrap_weight_kg DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '报废重量(kg)',
|
||||
MODIFY COLUMN extra_cost_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '额外成本金额',
|
||||
MODIFY COLUMN scrap_sale_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '废料销售金额',
|
||||
MODIFY COLUMN closed_at DATETIME NULL COMMENT '关闭时间',
|
||||
MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT 'OPEN' COMMENT '状态',
|
||||
MODIFY COLUMN remark VARCHAR(255) NULL COMMENT '备注',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE fi_accounting_period
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN period_code VARCHAR(20) NOT NULL COMMENT '期间编码',
|
||||
MODIFY COLUMN year_no INT NOT NULL COMMENT '年度',
|
||||
MODIFY COLUMN month_no INT NOT NULL COMMENT '月份',
|
||||
MODIFY COLUMN start_date DATE NOT NULL COMMENT '开始日期',
|
||||
MODIFY COLUMN end_date DATE NOT NULL COMMENT '结束日期',
|
||||
MODIFY COLUMN close_status VARCHAR(32) NOT NULL DEFAULT 'OPEN' COMMENT '关账状态',
|
||||
MODIFY COLUMN closed_at DATETIME NULL COMMENT '关闭时间',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE fi_overhead_entry
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN period_id BIGINT NOT NULL COMMENT '期间ID',
|
||||
MODIFY COLUMN overhead_type VARCHAR(32) NOT NULL COMMENT '制造费用类型:RENT/UTILITY/LOGISTICS/ADMIN/DEPRECIATION/OTHER',
|
||||
MODIFY COLUMN dept_id BIGINT NULL COMMENT '部门ID',
|
||||
MODIFY COLUMN amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '金额',
|
||||
MODIFY COLUMN allocation_basis VARCHAR(32) NOT NULL DEFAULT 'WORK_HOURS' COMMENT '分摊依据:WORK_HOURS/MACHINE_HOURS/QTY/OCCUPIED_AREA',
|
||||
MODIFY COLUMN description VARCHAR(255) NULL COMMENT '说明',
|
||||
MODIFY COLUMN created_by BIGINT NULL COMMENT '创建人用户ID',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE fi_cost_allocation
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN period_id BIGINT NOT NULL COMMENT '期间ID',
|
||||
MODIFY COLUMN work_order_id BIGINT NOT NULL COMMENT '工单ID',
|
||||
MODIFY COLUMN product_item_id BIGINT NOT NULL COMMENT '产品物料ID',
|
||||
MODIFY COLUMN allocation_basis_value DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '分摊依据值',
|
||||
MODIFY COLUMN overhead_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '制造费用金额',
|
||||
MODIFY COLUMN material_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '材料金额',
|
||||
MODIFY COLUMN labor_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '人工金额',
|
||||
MODIFY COLUMN machine_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '设备金额',
|
||||
MODIFY COLUMN abnormal_loss_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '异常损失金额',
|
||||
MODIFY COLUMN total_cost_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '总成本金额',
|
||||
MODIFY COLUMN unit_cost DECIMAL(18,6) NOT NULL DEFAULT 0 COMMENT '单位成本',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
|
||||
ALTER TABLE fi_statement_snapshot
|
||||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
MODIFY COLUMN snapshot_no VARCHAR(50) NOT NULL COMMENT '快照编号',
|
||||
MODIFY COLUMN period_id BIGINT NOT NULL COMMENT '期间ID',
|
||||
MODIFY COLUMN statement_type VARCHAR(32) NOT NULL COMMENT '报表类型:WEEKLY/MONTHLY/INVENTORY/COSTING',
|
||||
MODIFY COLUMN report_date DATE NOT NULL COMMENT '报表日期',
|
||||
MODIFY COLUMN summary_json JSON NOT NULL COMMENT '汇总数据(JSON)',
|
||||
MODIFY COLUMN created_by BIGINT NULL COMMENT '创建人用户ID',
|
||||
MODIFY COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
MODIFY COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
-- Lite 化流程兼容补丁:原材料驱动、客供料入库、无订单发货。
|
||||
ALTER TABLE pp_work_order
|
||||
MODIFY COLUMN work_order_no VARCHAR(80) NOT NULL COMMENT '生产跟踪号/历史生产工单号';
|
||||
|
||||
ALTER TABLE so_delivery
|
||||
MODIFY COLUMN sales_order_id BIGINT NULL COMMENT '来源订单ID;lite模式下可为空',
|
||||
ADD COLUMN customer_id BIGINT NULL COMMENT '收货客户ID;无订单发货时必填' AFTER sales_order_id;
|
||||
|
||||
ALTER TABLE so_delivery_item
|
||||
MODIFY COLUMN sales_order_item_id BIGINT NULL COMMENT '来源订单明细ID;lite模式下可为空';
|
||||
|
||||
CREATE INDEX idx_so_delivery_customer_id ON so_delivery (customer_id);
|
||||
@@ -0,0 +1,111 @@
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('期初入库', SUBSTRING(remark, CHAR_LENGTH('OPENING') + 1))
|
||||
WHERE remark = 'OPENING' OR remark LIKE 'OPENING;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('客料入库', SUBSTRING(remark, CHAR_LENGTH('CUSTOMER_SUPPLIED') + 1))
|
||||
WHERE remark = 'CUSTOMER_SUPPLIED' OR remark LIKE 'CUSTOMER_SUPPLIED;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('生产余料入库', SUBSTRING(remark, CHAR_LENGTH('PRODUCTION_SURPLUS') + 1))
|
||||
WHERE remark = 'PRODUCTION_SURPLUS' OR remark LIKE 'PRODUCTION_SURPLUS;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('委外余料入库', SUBSTRING(remark, CHAR_LENGTH('OUTSOURCING_SURPLUS') + 1))
|
||||
WHERE remark = 'OUTSOURCING_SURPLUS' OR remark LIKE 'OUTSOURCING_SURPLUS;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('生产废料入库', SUBSTRING(remark, CHAR_LENGTH('PRODUCTION_SCRAP_IN') + 1))
|
||||
WHERE remark = 'PRODUCTION_SCRAP_IN' OR remark LIKE 'PRODUCTION_SCRAP_IN;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('委外废料入库', SUBSTRING(remark, CHAR_LENGTH('OUTSOURCING_SCRAP_IN') + 1))
|
||||
WHERE remark = 'OUTSOURCING_SCRAP_IN' OR remark LIKE 'OUTSOURCING_SCRAP_IN;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('产中入库', SUBSTRING(remark, CHAR_LENGTH('WIP_IN') + 1))
|
||||
WHERE remark = 'WIP_IN' OR remark LIKE 'WIP_IN;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('委外入库', SUBSTRING(remark, CHAR_LENGTH('OUTSOURCING_IN') + 1))
|
||||
WHERE remark = 'OUTSOURCING_IN' OR remark LIKE 'OUTSOURCING_IN;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('生产入库', SUBSTRING(remark, CHAR_LENGTH('PRODUCTION_FINISHED') + 1))
|
||||
WHERE remark = 'PRODUCTION_FINISHED' OR remark LIKE 'PRODUCTION_FINISHED;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('生产出库', SUBSTRING(remark, CHAR_LENGTH('PRODUCTION_OUT') + 1))
|
||||
WHERE remark = 'PRODUCTION_OUT' OR remark LIKE 'PRODUCTION_OUT;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('委外出库', SUBSTRING(remark, CHAR_LENGTH('OUTSOURCING_OUT') + 1))
|
||||
WHERE remark = 'OUTSOURCING_OUT' OR remark LIKE 'OUTSOURCING_OUT;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('报废出库', SUBSTRING(remark, CHAR_LENGTH('SCRAP_OUT') + 1))
|
||||
WHERE remark = 'SCRAP_OUT' OR remark LIKE 'SCRAP_OUT;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('售卖出库', SUBSTRING(remark, CHAR_LENGTH('SCRAP_SALE_OUT') + 1))
|
||||
WHERE remark = 'SCRAP_SALE_OUT' OR remark LIKE 'SCRAP_SALE_OUT;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('产中出库', SUBSTRING(remark, CHAR_LENGTH('WIP_OUT') + 1))
|
||||
WHERE remark = 'WIP_OUT' OR remark LIKE 'WIP_OUT;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('销售出库', SUBSTRING(remark, CHAR_LENGTH('SALES_OUT') + 1))
|
||||
WHERE remark = 'SALES_OUT' OR remark LIKE 'SALES_OUT;%';
|
||||
|
||||
UPDATE wh_inventory_txn
|
||||
SET remark = CONCAT('退货出库', SUBSTRING(remark, CHAR_LENGTH('PURCHASE_RETURN_OUT') + 1))
|
||||
WHERE remark = 'PURCHASE_RETURN_OUT' OR remark LIKE 'PURCHASE_RETURN_OUT;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET remark = CONCAT('期初入库', SUBSTRING(remark, CHAR_LENGTH('OPENING') + 1))
|
||||
WHERE remark = 'OPENING' OR remark LIKE 'OPENING;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET remark = CONCAT('客料入库', SUBSTRING(remark, CHAR_LENGTH('CUSTOMER_SUPPLIED') + 1))
|
||||
WHERE remark = 'CUSTOMER_SUPPLIED' OR remark LIKE 'CUSTOMER_SUPPLIED;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET remark = CONCAT('生产余料入库', SUBSTRING(remark, CHAR_LENGTH('PRODUCTION_SURPLUS') + 1))
|
||||
WHERE remark = 'PRODUCTION_SURPLUS' OR remark LIKE 'PRODUCTION_SURPLUS;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET remark = CONCAT('委外余料入库', SUBSTRING(remark, CHAR_LENGTH('OUTSOURCING_SURPLUS') + 1))
|
||||
WHERE remark = 'OUTSOURCING_SURPLUS' OR remark LIKE 'OUTSOURCING_SURPLUS;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET remark = CONCAT('生产废料入库', SUBSTRING(remark, CHAR_LENGTH('PRODUCTION_SCRAP_IN') + 1))
|
||||
WHERE remark = 'PRODUCTION_SCRAP_IN' OR remark LIKE 'PRODUCTION_SCRAP_IN;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET remark = CONCAT('委外废料入库', SUBSTRING(remark, CHAR_LENGTH('OUTSOURCING_SCRAP_IN') + 1))
|
||||
WHERE remark = 'OUTSOURCING_SCRAP_IN' OR remark LIKE 'OUTSOURCING_SCRAP_IN;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET source_material_summary = CONCAT('期初入库', SUBSTRING(source_material_summary, CHAR_LENGTH('OPENING') + 1))
|
||||
WHERE source_material_summary = 'OPENING' OR source_material_summary LIKE 'OPENING;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET source_material_summary = CONCAT('客料入库', SUBSTRING(source_material_summary, CHAR_LENGTH('CUSTOMER_SUPPLIED') + 1))
|
||||
WHERE source_material_summary = 'CUSTOMER_SUPPLIED' OR source_material_summary LIKE 'CUSTOMER_SUPPLIED;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET source_material_summary = CONCAT('生产余料入库', SUBSTRING(source_material_summary, CHAR_LENGTH('PRODUCTION_SURPLUS') + 1))
|
||||
WHERE source_material_summary = 'PRODUCTION_SURPLUS' OR source_material_summary LIKE 'PRODUCTION_SURPLUS;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET source_material_summary = CONCAT('委外余料入库', SUBSTRING(source_material_summary, CHAR_LENGTH('OUTSOURCING_SURPLUS') + 1))
|
||||
WHERE source_material_summary = 'OUTSOURCING_SURPLUS' OR source_material_summary LIKE 'OUTSOURCING_SURPLUS;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET source_material_summary = CONCAT('生产废料入库', SUBSTRING(source_material_summary, CHAR_LENGTH('PRODUCTION_SCRAP_IN') + 1))
|
||||
WHERE source_material_summary = 'PRODUCTION_SCRAP_IN' OR source_material_summary LIKE 'PRODUCTION_SCRAP_IN;%';
|
||||
|
||||
UPDATE wh_stock_lot
|
||||
SET source_material_summary = CONCAT('委外废料入库', SUBSTRING(source_material_summary, CHAR_LENGTH('OUTSOURCING_SCRAP_IN') + 1))
|
||||
WHERE source_material_summary = 'OUTSOURCING_SCRAP_IN' OR source_material_summary LIKE 'OUTSOURCING_SCRAP_IN;%';
|
||||
@@ -0,0 +1,111 @@
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 目的:将历史正常生产工单的领料记录迁移到生产台账。
|
||||
-- 幂等性:生产台账按“材料库存批次 + 产品”唯一键更新,流水按历史工单领料明细防重复插入。
|
||||
|
||||
INSERT INTO pp_production_batch_ledger (
|
||||
material_lot_id,
|
||||
material_lot_no,
|
||||
material_item_id,
|
||||
product_item_id,
|
||||
status,
|
||||
miniapp_selectable,
|
||||
total_issued_weight_kg,
|
||||
outside_weight_kg,
|
||||
finished_inbound_qty,
|
||||
surplus_inbound_weight_kg,
|
||||
scrap_inbound_weight_kg,
|
||||
writeoff_weight_kg,
|
||||
first_issue_time,
|
||||
last_issue_time,
|
||||
remark
|
||||
)
|
||||
SELECT
|
||||
issue.source_lot_id,
|
||||
lot.lot_no,
|
||||
issue.material_item_id,
|
||||
wo.product_item_id,
|
||||
CASE WHEN UPPER(COALESCE(wo.status, '')) = 'SETTLED' THEN '锁单' ELSE '在生产' END,
|
||||
CASE WHEN UPPER(COALESCE(wo.status, '')) = 'SETTLED' THEN 0 ELSE 1 END,
|
||||
SUM(COALESCE(issue.issued_weight_kg, 0)),
|
||||
GREATEST(SUM(COALESCE(issue.issued_weight_kg, 0)) - COALESCE(MAX(wom.returned_weight_kg), 0), 0),
|
||||
COALESCE(MAX(wo.finished_qty), 0),
|
||||
COALESCE(MAX(wom.returned_weight_kg), 0),
|
||||
0,
|
||||
0,
|
||||
MIN(issue.issue_time),
|
||||
MAX(issue.issue_time),
|
||||
'由历史生产工单迁移生成'
|
||||
FROM pp_work_order wo
|
||||
JOIN pp_work_order_material_issue issue ON issue.work_order_id = wo.id
|
||||
JOIN wh_stock_lot lot ON lot.id = issue.source_lot_id
|
||||
LEFT JOIN pp_work_order_material wom
|
||||
ON wom.work_order_id = wo.id
|
||||
AND wom.material_item_id = issue.material_item_id
|
||||
WHERE wo.work_order_type = 'NORMAL'
|
||||
GROUP BY
|
||||
issue.source_lot_id,
|
||||
lot.lot_no,
|
||||
issue.material_item_id,
|
||||
wo.product_item_id,
|
||||
wo.status
|
||||
ON DUPLICATE KEY UPDATE
|
||||
material_lot_no = VALUES(material_lot_no),
|
||||
material_item_id = VALUES(material_item_id),
|
||||
status = VALUES(status),
|
||||
miniapp_selectable = VALUES(miniapp_selectable),
|
||||
total_issued_weight_kg = VALUES(total_issued_weight_kg),
|
||||
outside_weight_kg = VALUES(outside_weight_kg),
|
||||
finished_inbound_qty = VALUES(finished_inbound_qty),
|
||||
surplus_inbound_weight_kg = VALUES(surplus_inbound_weight_kg),
|
||||
scrap_inbound_weight_kg = VALUES(scrap_inbound_weight_kg),
|
||||
writeoff_weight_kg = VALUES(writeoff_weight_kg),
|
||||
first_issue_time = VALUES(first_issue_time),
|
||||
last_issue_time = VALUES(last_issue_time),
|
||||
remark = CASE
|
||||
WHEN pp_production_batch_ledger.remark IS NULL OR pp_production_batch_ledger.remark = '' THEN '历史工单迁移已更新'
|
||||
WHEN pp_production_batch_ledger.remark LIKE '%历史工单迁移已更新%' THEN pp_production_batch_ledger.remark
|
||||
ELSE CONCAT(pp_production_batch_ledger.remark, ';历史工单迁移已更新')
|
||||
END;
|
||||
|
||||
-- 目的:为每条历史领料明细补充生产台账流水,保留原始工单与明细来源。
|
||||
INSERT INTO pp_production_batch_ledger_txn (
|
||||
production_ledger_id,
|
||||
txn_type,
|
||||
qty_delta,
|
||||
weight_delta_kg,
|
||||
outside_weight_after_kg,
|
||||
source_doc_type,
|
||||
source_doc_id,
|
||||
source_line_id,
|
||||
biz_time,
|
||||
operator_user_id,
|
||||
remark
|
||||
)
|
||||
SELECT
|
||||
ledger.id,
|
||||
'生产出库',
|
||||
0,
|
||||
COALESCE(issue.issued_weight_kg, 0),
|
||||
ledger.outside_weight_kg,
|
||||
'历史生产工单',
|
||||
issue.work_order_id,
|
||||
issue.id,
|
||||
issue.issue_time,
|
||||
issue.operator_user_id,
|
||||
'由历史生产工单领料记录迁移'
|
||||
FROM pp_work_order_material_issue issue
|
||||
JOIN pp_work_order wo ON wo.id = issue.work_order_id
|
||||
JOIN pp_production_batch_ledger ledger
|
||||
ON ledger.material_lot_id = issue.source_lot_id
|
||||
AND ledger.product_item_id = wo.product_item_id
|
||||
WHERE wo.work_order_type = 'NORMAL'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pp_production_batch_ledger_txn existing
|
||||
WHERE existing.production_ledger_id = ledger.id
|
||||
AND existing.source_doc_type = '历史生产工单'
|
||||
AND existing.source_doc_id = issue.work_order_id
|
||||
AND existing.source_line_id = issue.id
|
||||
AND existing.txn_type = '生产出库'
|
||||
);
|
||||
@@ -0,0 +1,47 @@
|
||||
SET @idx_reports_report_date_id_exists := (
|
||||
SELECT COUNT(1)
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'production_reports'
|
||||
AND index_name = 'idx_reports_report_date_id'
|
||||
);
|
||||
SET @idx_reports_report_date_id_sql := IF(
|
||||
@idx_reports_report_date_id_exists = 0,
|
||||
'ALTER TABLE production_reports ADD INDEX idx_reports_report_date_id (report_date, id)',
|
||||
'SELECT ''idx_reports_report_date_id already exists'''
|
||||
);
|
||||
PREPARE idx_reports_report_date_id_stmt FROM @idx_reports_report_date_id_sql;
|
||||
EXECUTE idx_reports_report_date_id_stmt;
|
||||
DEALLOCATE PREPARE idx_reports_report_date_id_stmt;
|
||||
|
||||
SET @idx_reports_updated_at_id_exists := (
|
||||
SELECT COUNT(1)
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'production_reports'
|
||||
AND index_name = 'idx_reports_updated_at_id'
|
||||
);
|
||||
SET @idx_reports_updated_at_id_sql := IF(
|
||||
@idx_reports_updated_at_id_exists = 0,
|
||||
'ALTER TABLE production_reports ADD INDEX idx_reports_updated_at_id (updated_at, id)',
|
||||
'SELECT ''idx_reports_updated_at_id already exists'''
|
||||
);
|
||||
PREPARE idx_reports_updated_at_id_stmt FROM @idx_reports_updated_at_id_sql;
|
||||
EXECUTE idx_reports_updated_at_id_stmt;
|
||||
DEALLOCATE PREPARE idx_reports_updated_at_id_stmt;
|
||||
|
||||
SET @idx_report_items_report_id_id_exists := (
|
||||
SELECT COUNT(1)
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE()
|
||||
AND table_name = 'production_report_items'
|
||||
AND index_name = 'idx_report_items_report_id_id'
|
||||
);
|
||||
SET @idx_report_items_report_id_id_sql := IF(
|
||||
@idx_report_items_report_id_id_exists = 0,
|
||||
'ALTER TABLE production_report_items ADD INDEX idx_report_items_report_id_id (report_id, id)',
|
||||
'SELECT ''idx_report_items_report_id_id already exists'''
|
||||
);
|
||||
PREPARE idx_report_items_report_id_id_stmt FROM @idx_report_items_report_id_id_sql;
|
||||
EXECUTE idx_report_items_report_id_id_stmt;
|
||||
DEALLOCATE PREPARE idx_report_items_report_id_id_stmt;
|
||||
@@ -0,0 +1,102 @@
|
||||
-- 原材料重量口径清理脚本
|
||||
-- 目标:原材料业务只保留重量,不再保留数量口径。
|
||||
-- 注意:成品、销售订单、发货、退货仍保留件数/PCS,不在本脚本处理范围内。
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
UPDATE md_material material
|
||||
JOIN md_item item ON item.id = material.item_id
|
||||
SET
|
||||
material.purchase_calc_mode = 'BY_WEIGHT',
|
||||
material.purchase_multiple_qty = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE md_bom_item bom_item
|
||||
JOIN md_item item ON item.id = bom_item.material_item_id
|
||||
SET
|
||||
bom_item.usage_type = 'WEIGHT',
|
||||
bom_item.qty_per_piece = 1
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE mrp_material_demand
|
||||
SET suggested_purchase_qty = 0;
|
||||
|
||||
UPDATE po_purchase_order_item po_item
|
||||
JOIN md_item item ON item.id = po_item.material_item_id
|
||||
SET
|
||||
po_item.order_qty = 0,
|
||||
po_item.received_qty = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE po_receipt_item receipt_item
|
||||
JOIN md_item item ON item.id = receipt_item.material_item_id
|
||||
SET
|
||||
receipt_item.received_qty = 0,
|
||||
receipt_item.accepted_qty = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE wh_stock_lot lot
|
||||
JOIN md_item item ON item.id = lot.item_id
|
||||
SET
|
||||
lot.inbound_qty = 0,
|
||||
lot.remaining_qty = 0,
|
||||
lot.locked_qty = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE wh_stock_balance balance
|
||||
JOIN md_item item ON item.id = balance.item_id
|
||||
SET
|
||||
balance.qty_on_hand = 0,
|
||||
balance.qty_available = 0,
|
||||
balance.qty_allocated = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE wh_inventory_txn txn
|
||||
JOIN md_item item ON item.id = txn.item_id
|
||||
SET txn.qty_change = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE pp_work_order_material material
|
||||
JOIN md_item item ON item.id = material.material_item_id
|
||||
SET
|
||||
material.required_qty = 0,
|
||||
material.issued_qty = 0,
|
||||
material.returned_qty = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE pp_work_order_material_issue issue_row
|
||||
JOIN md_item item ON item.id = issue_row.material_item_id
|
||||
SET issue_row.issued_qty = 0
|
||||
WHERE item.item_type = 'RAW_MATERIAL';
|
||||
|
||||
UPDATE pp_work_order wo
|
||||
JOIN (
|
||||
SELECT
|
||||
wom.work_order_id,
|
||||
FLOOR(
|
||||
COALESCE(NULLIF(wom.issued_weight_kg, 0), NULLIF(wom.required_weight_kg, 0), 0)
|
||||
/ COALESCE(NULLIF(bi.gross_weight_per_piece_kg, 0), NULLIF(product.unit_weight_kg, 0))
|
||||
) AS reference_qty
|
||||
FROM pp_work_order_material wom
|
||||
JOIN (
|
||||
SELECT work_order_id, MIN(id) AS first_material_row_id
|
||||
FROM pp_work_order_material
|
||||
GROUP BY work_order_id
|
||||
) first_row ON first_row.first_material_row_id = wom.id
|
||||
JOIN pp_work_order wo_inner ON wo_inner.id = wom.work_order_id
|
||||
JOIN md_item product ON product.id = wo_inner.product_item_id
|
||||
JOIN md_bom_item bi ON bi.id = wom.bom_item_id
|
||||
JOIN md_item material ON material.id = wom.material_item_id
|
||||
WHERE material.item_type = 'RAW_MATERIAL'
|
||||
) calc ON calc.work_order_id = wo.id
|
||||
SET
|
||||
wo.planned_qty = calc.reference_qty,
|
||||
wo.released_qty = calc.reference_qty
|
||||
WHERE calc.reference_qty > 0;
|
||||
|
||||
UPDATE pp_work_order_operation operation
|
||||
JOIN pp_work_order wo ON wo.id = operation.work_order_id
|
||||
SET operation.planned_qty = wo.planned_qty
|
||||
WHERE wo.planned_qty > 0;
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,616 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- 菜单权限
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT 'MENU_DASHBOARD', '经营驾驶舱菜单', 'DASHBOARD', 'VIEW', 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD');
|
||||
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT 'MENU_SALES_PLANNING', '订单与计划中心菜单', 'SALES_PLANNING', 'VIEW', 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING');
|
||||
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT 'MENU_PROCESS_CENTER', '流程与工序中心菜单', 'PROCESS_CENTER', 'VIEW', 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER');
|
||||
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT 'MENU_DATA_MODEL', '模块联动与数据设计菜单', 'DATA_MODEL', 'VIEW', 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_permission WHERE permission_code = 'MENU_DATA_MODEL');
|
||||
|
||||
-- 员工
|
||||
INSERT INTO hr_employee (
|
||||
employee_code, employee_name, dept_id, mobile, gender, hire_date, job_title,
|
||||
shift_code, manager_employee_id, is_operator, is_workshop_staff, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EMP-ADMIN-001', '系统管理员',
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'ADMIN'),
|
||||
'13800000001', 'M', CURRENT_DATE(), 'ERP管理员',
|
||||
'DAY', NULL, 0, 0, 'ACTIVE', '系统初始化账号'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM hr_employee WHERE employee_code = 'EMP-ADMIN-001');
|
||||
|
||||
INSERT INTO hr_employee (
|
||||
employee_code, employee_name, dept_id, mobile, gender, hire_date, job_title,
|
||||
shift_code, manager_employee_id, is_operator, is_workshop_staff, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EMP-SALES-001', '销售专员',
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'SALES'),
|
||||
'13800000002', 'F', CURRENT_DATE(), '销售跟单',
|
||||
'DAY', NULL, 0, 0, 'ACTIVE', '样例销售账号'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM hr_employee WHERE employee_code = 'EMP-SALES-001');
|
||||
|
||||
INSERT INTO hr_employee (
|
||||
employee_code, employee_name, dept_id, mobile, gender, hire_date, job_title,
|
||||
shift_code, manager_employee_id, is_operator, is_workshop_staff, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EMP-PLAN-001', '计划员',
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'),
|
||||
'13800000003', 'M', CURRENT_DATE(), '生产计划',
|
||||
'DAY', NULL, 0, 0, 'ACTIVE', '样例计划账号'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM hr_employee WHERE employee_code = 'EMP-PLAN-001');
|
||||
|
||||
INSERT INTO hr_employee (
|
||||
employee_code, employee_name, dept_id, mobile, gender, hire_date, job_title,
|
||||
shift_code, manager_employee_id, is_operator, is_workshop_staff, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EMP-WH-001', '仓库主管',
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'WAREHOUSE'),
|
||||
'13800000004', 'M', CURRENT_DATE(), '仓储主管',
|
||||
'DAY', NULL, 0, 0, 'ACTIVE', '样例仓储账号'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM hr_employee WHERE employee_code = 'EMP-WH-001');
|
||||
|
||||
INSERT INTO hr_employee (
|
||||
employee_code, employee_name, dept_id, mobile, gender, hire_date, job_title,
|
||||
shift_code, manager_employee_id, is_operator, is_workshop_staff, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EMP-SUP-001', '车间主管',
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'),
|
||||
'13800000005', 'M', CURRENT_DATE(), '车间主管',
|
||||
'DAY', NULL, 0, 1, 'ACTIVE', '样例车间主管账号'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM hr_employee WHERE employee_code = 'EMP-SUP-001');
|
||||
|
||||
-- 用户
|
||||
INSERT INTO sys_user (
|
||||
username, password_hash, employee_id, dept_id, nickname, email,
|
||||
is_super_admin, last_login_at, status
|
||||
)
|
||||
SELECT
|
||||
'admin',
|
||||
'pbkdf2_sha256$600000$wQvlXNnVpATAKxQ4TW41JQ==$KcuwnxttYYu1RyThhviUb4BaCztSkwZ_Z-oUkz3lwzs=',
|
||||
(SELECT id FROM hr_employee WHERE employee_code = 'EMP-ADMIN-001'),
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'ADMIN'),
|
||||
'系统管理员', 'admin@jiaheng.local',
|
||||
1, NULL, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_user WHERE username = 'admin');
|
||||
|
||||
INSERT INTO sys_user (
|
||||
username, password_hash, employee_id, dept_id, nickname, email,
|
||||
is_super_admin, last_login_at, status
|
||||
)
|
||||
SELECT
|
||||
'sales',
|
||||
'pbkdf2_sha256$600000$dK6ZnRGU7UWZGguuiTZ63g==$R3H8ds5shAvmwK9AblmKgufZvlJTIPWzK_6CvO_a73M=',
|
||||
(SELECT id FROM hr_employee WHERE employee_code = 'EMP-SALES-001'),
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'SALES'),
|
||||
'销售专员', 'sales@jiaheng.local',
|
||||
0, NULL, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_user WHERE username = 'sales');
|
||||
|
||||
INSERT INTO sys_user (
|
||||
username, password_hash, employee_id, dept_id, nickname, email,
|
||||
is_super_admin, last_login_at, status
|
||||
)
|
||||
SELECT
|
||||
'planner',
|
||||
'pbkdf2_sha256$600000$yJtJeB76-AWLXUKd8ex20A==$PyZUtFuPjGlb0nYLBx9IHunjhtnV-HjE5pauLD-ogHk=',
|
||||
(SELECT id FROM hr_employee WHERE employee_code = 'EMP-PLAN-001'),
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'),
|
||||
'计划员', 'planner@jiaheng.local',
|
||||
0, NULL, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_user WHERE username = 'planner');
|
||||
|
||||
INSERT INTO sys_user (
|
||||
username, password_hash, employee_id, dept_id, nickname, email,
|
||||
is_super_admin, last_login_at, status
|
||||
)
|
||||
SELECT
|
||||
'warehouse',
|
||||
'pbkdf2_sha256$600000$FmDxVJ07KoHNLocfUMilGw==$ZKuYJnKc_aUZ1el128w9Ukn3ofC_OQQrr-86iV412XY=',
|
||||
(SELECT id FROM hr_employee WHERE employee_code = 'EMP-WH-001'),
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'WAREHOUSE'),
|
||||
'仓库主管', 'warehouse@jiaheng.local',
|
||||
0, NULL, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_user WHERE username = 'warehouse');
|
||||
|
||||
INSERT INTO sys_user (
|
||||
username, password_hash, employee_id, dept_id, nickname, email,
|
||||
is_super_admin, last_login_at, status
|
||||
)
|
||||
SELECT
|
||||
'supervisor',
|
||||
'pbkdf2_sha256$600000$GsM4Kgs232UoRx-QoHmZ_w==$E33NOSOdhtd_-LqqxL9QAYjPmOhDqUkyxXNj5CRe1aY=',
|
||||
(SELECT id FROM hr_employee WHERE employee_code = 'EMP-SUP-001'),
|
||||
(SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'),
|
||||
'车间主管', 'supervisor@jiaheng.local',
|
||||
0, NULL, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_user WHERE username = 'supervisor');
|
||||
|
||||
-- 用户角色
|
||||
INSERT INTO sys_user_role (user_id, role_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_user WHERE username = 'admin'),
|
||||
(SELECT id FROM sys_role WHERE role_code = 'ADMIN')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role
|
||||
WHERE user_id = (SELECT id FROM sys_user WHERE username = 'admin')
|
||||
AND role_id = (SELECT id FROM sys_role WHERE role_code = 'ADMIN')
|
||||
);
|
||||
|
||||
INSERT INTO sys_user_role (user_id, role_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_user WHERE username = 'sales'),
|
||||
(SELECT id FROM sys_role WHERE role_code = 'SALES')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role
|
||||
WHERE user_id = (SELECT id FROM sys_user WHERE username = 'sales')
|
||||
AND role_id = (SELECT id FROM sys_role WHERE role_code = 'SALES')
|
||||
);
|
||||
|
||||
INSERT INTO sys_user_role (user_id, role_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_user WHERE username = 'planner'),
|
||||
(SELECT id FROM sys_role WHERE role_code = 'PLANNER')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role
|
||||
WHERE user_id = (SELECT id FROM sys_user WHERE username = 'planner')
|
||||
AND role_id = (SELECT id FROM sys_role WHERE role_code = 'PLANNER')
|
||||
);
|
||||
|
||||
INSERT INTO sys_user_role (user_id, role_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_user WHERE username = 'warehouse'),
|
||||
(SELECT id FROM sys_role WHERE role_code = 'WAREHOUSE')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role
|
||||
WHERE user_id = (SELECT id FROM sys_user WHERE username = 'warehouse')
|
||||
AND role_id = (SELECT id FROM sys_role WHERE role_code = 'WAREHOUSE')
|
||||
);
|
||||
|
||||
INSERT INTO sys_user_role (user_id, role_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_user WHERE username = 'supervisor'),
|
||||
(SELECT id FROM sys_role WHERE role_code = 'SUPERVISOR')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role
|
||||
WHERE user_id = (SELECT id FROM sys_user WHERE username = 'supervisor')
|
||||
AND role_id = (SELECT id FROM sys_role WHERE role_code = 'SUPERVISOR')
|
||||
);
|
||||
|
||||
-- 角色菜单权限
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'ADMIN'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'ADMIN')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'ADMIN'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'ADMIN')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'ADMIN'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'ADMIN')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'ADMIN'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_DATA_MODEL')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'ADMIN')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_DATA_MODEL')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'SALES'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'SALES')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'SALES'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'SALES')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'PLANNER'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'PLANNER')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'PLANNER'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'PLANNER')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_SALES_PLANNING')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'PLANNER'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'PLANNER')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'WAREHOUSE'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'WAREHOUSE')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'WAREHOUSE'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'WAREHOUSE')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'SUPERVISOR'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'SUPERVISOR')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_DASHBOARD')
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT
|
||||
(SELECT id FROM sys_role WHERE role_code = 'SUPERVISOR'),
|
||||
(SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_permission
|
||||
WHERE role_id = (SELECT id FROM sys_role WHERE role_code = 'SUPERVISOR')
|
||||
AND permission_id = (SELECT id FROM sys_permission WHERE permission_code = 'MENU_PROCESS_CENTER')
|
||||
);
|
||||
|
||||
-- 细分菜单权限
|
||||
INSERT INTO sys_permission (permission_code, permission_name, module_code, action_code, status)
|
||||
SELECT p.permission_code, p.permission_name, p.module_code, p.action_code, 'ACTIVE'
|
||||
FROM (
|
||||
SELECT 'MENU_SUPPLIER_MANAGEMENT' AS permission_code, '供应商管理菜单' AS permission_name, 'SUPPLIER_MANAGEMENT' AS module_code, 'VIEW' AS action_code
|
||||
UNION ALL
|
||||
SELECT 'MENU_PURCHASE_ORDER', '采购订单菜单', 'PURCHASE_ORDER', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_PURCHASE_RECEIPT', '到货入库菜单', 'PURCHASE_RECEIPT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_INVENTORY_LEDGER', '原材料库存台账与批次菜单', 'INVENTORY_LEDGER', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_WORK_ORDER', '生产工单菜单', 'WORK_ORDER', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_OPERATION_REPORT', '工序报工菜单', 'OPERATION_REPORT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_SCRAP_REWORK', '报废返工处理菜单', 'SCRAP_REWORK', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_COMPLETION_RECEIPT', '成品入库菜单', 'COMPLETION_RECEIPT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_DELIVERY_MANAGEMENT', '发货管理菜单', 'DELIVERY_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_EQUIPMENT_MANAGEMENT', '设备台账与保养菜单', 'EQUIPMENT_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_QUALITY_INSPECTION', '质量检验菜单', 'QUALITY_INSPECTION', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_FINANCE_REPORT', '财务成本与报表菜单', 'FINANCE_REPORT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_RETURN_MANAGEMENT', '退货处理菜单', 'RETURN_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_MATERIAL_MANAGEMENT', '原材料管理菜单', 'MATERIAL_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_BOM_MANAGEMENT', 'BOM管理菜单', 'BOM_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_ROUTE_MANAGEMENT', '工艺路线管理菜单', 'ROUTE_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_EMPLOYEE_MANAGEMENT', '员工管理菜单', 'EMPLOYEE_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_PRODUCT_MANAGEMENT', '产品管理菜单', 'PRODUCT_MANAGEMENT', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_SYSTEM_PERMISSION', '系统权限管理菜单', 'SYSTEM_PERMISSION', 'VIEW'
|
||||
UNION ALL
|
||||
SELECT 'MENU_SYSTEM_EXTENSION', '系统拓展菜单', 'SYSTEM_EXTENSION', 'VIEW'
|
||||
) AS p
|
||||
LEFT JOIN sys_permission existing ON existing.permission_code = p.permission_code
|
||||
WHERE existing.id IS NULL;
|
||||
|
||||
-- 补充角色测试账号对应员工
|
||||
INSERT INTO hr_employee (
|
||||
employee_code, employee_name, dept_id, mobile, gender, hire_date, job_title,
|
||||
shift_code, manager_employee_id, is_operator, is_workshop_staff, status, remark
|
||||
)
|
||||
SELECT
|
||||
e.employee_code, e.employee_name, d.id, e.mobile, e.gender, CURRENT_DATE(), e.job_title,
|
||||
e.shift_code, NULL, e.is_operator, e.is_workshop_staff, 'ACTIVE', e.remark
|
||||
FROM (
|
||||
SELECT 'EMP-PUR-001' AS employee_code, '采购专员' AS employee_name, 'PURCHASE' AS dept_code, '13800000006' AS mobile, 'F' AS gender, '采购跟单' AS job_title, 'DAY' AS shift_code, 0 AS is_operator, 0 AS is_workshop_staff, '样例采购账号' AS remark
|
||||
UNION ALL
|
||||
SELECT 'EMP-FIN-001', '财务专员', 'FINANCE', '13800000007', 'F', '成本会计', 'DAY', 0, 0, '样例财务账号'
|
||||
UNION ALL
|
||||
SELECT 'EMP-EQP-001', '设备管理员', 'EQUIPMENT', '13800000008', 'M', '设备工程师', 'DAY', 0, 0, '样例设备管理员账号'
|
||||
UNION ALL
|
||||
SELECT 'EMP-OP-001', '冲压操作工', 'PRODUCTION', '13800000009', 'M', '冲压操作工', 'A', 1, 1, '样例加工员工账号'
|
||||
) AS e
|
||||
JOIN sys_department d ON d.dept_code = e.dept_code
|
||||
LEFT JOIN hr_employee existing ON existing.employee_code = e.employee_code
|
||||
WHERE existing.id IS NULL;
|
||||
|
||||
-- 补充系统账号
|
||||
INSERT INTO sys_user (
|
||||
username, password_hash, employee_id, dept_id, nickname, email,
|
||||
is_super_admin, last_login_at, status
|
||||
)
|
||||
SELECT
|
||||
u.username, u.password_hash, e.id, d.id, u.nickname, u.email,
|
||||
0, NULL, 'ACTIVE'
|
||||
FROM (
|
||||
SELECT 'purchaser' AS username, 'pbkdf2_sha256$600000$ddxZt8DlrH-U27hQprqEzg==$QKgRLC3hdLmUI9nZ6AaP0mlVoH5vtu6diHeq9uS2fTg=' AS password_hash, 'EMP-PUR-001' AS employee_code, 'PURCHASE' AS dept_code, '采购专员' AS nickname, 'purchaser@jiaheng.local' AS email
|
||||
UNION ALL
|
||||
SELECT 'finance', 'pbkdf2_sha256$600000$K8pAnzCmAYKS74hZQ7M-uQ==$M1eT-INdsarnu297oEJNU_muEMxY8GMIGuYq3aiK_8A=', 'EMP-FIN-001', 'FINANCE', '财务专员', 'finance@jiaheng.local'
|
||||
UNION ALL
|
||||
SELECT 'equipadmin', 'pbkdf2_sha256$600000$FpH9NnUxpcxyc10mHnTzsg==$EHCnopdhmaIPzCIixzE431wEZVj7uk8IUaoA-0vAl1Y=', 'EMP-EQP-001', 'EQUIPMENT', '设备管理员', 'equipadmin@jiaheng.local'
|
||||
UNION ALL
|
||||
SELECT 'operator', 'pbkdf2_sha256$600000$zvfrPJQL-fSdmSbuJNns7w==$7U1npAmi-5KLSW3BPFWDwqXb0Vx-ag5q6rlVJVxTDkU=', 'EMP-OP-001', 'PRODUCTION', '加工员工', 'operator@jiaheng.local'
|
||||
) AS u
|
||||
JOIN hr_employee e ON e.employee_code = u.employee_code
|
||||
JOIN sys_department d ON d.dept_code = u.dept_code
|
||||
LEFT JOIN sys_user existing ON existing.username = u.username
|
||||
WHERE existing.id IS NULL;
|
||||
|
||||
-- 补充用户角色
|
||||
INSERT INTO sys_user_role (user_id, role_id)
|
||||
SELECT u.id, r.id
|
||||
FROM (
|
||||
SELECT 'purchaser' AS username, 'PURCHASER' AS role_code
|
||||
UNION ALL
|
||||
SELECT 'finance', 'FINANCE'
|
||||
UNION ALL
|
||||
SELECT 'equipadmin', 'EQUIP_ADMIN'
|
||||
UNION ALL
|
||||
SELECT 'operator', 'OPERATOR'
|
||||
) AS m
|
||||
JOIN sys_user u ON u.username = m.username
|
||||
JOIN sys_role r ON r.role_code = m.role_code
|
||||
LEFT JOIN sys_user_role existing ON existing.user_id = u.id AND existing.role_id = r.id
|
||||
WHERE existing.id IS NULL;
|
||||
|
||||
-- 细分角色菜单权限
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT r.id, p.id
|
||||
FROM (
|
||||
SELECT 'ADMIN' AS role_code, 'MENU_SUPPLIER_MANAGEMENT' AS permission_code
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_PURCHASE_ORDER'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_PURCHASE_RECEIPT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_INVENTORY_LEDGER'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_WORK_ORDER'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_OPERATION_REPORT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_SCRAP_REWORK'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_COMPLETION_RECEIPT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_DELIVERY_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_EQUIPMENT_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_QUALITY_INSPECTION'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_FINANCE_REPORT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_RETURN_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_MATERIAL_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_BOM_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_ROUTE_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_EMPLOYEE_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_PRODUCT_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_SYSTEM_PERMISSION'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_SYSTEM_EXTENSION'
|
||||
UNION ALL
|
||||
SELECT 'SALES', 'MENU_DELIVERY_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'SALES', 'MENU_RETURN_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'PURCHASER', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'PURCHASER', 'MENU_SUPPLIER_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'PURCHASER', 'MENU_PURCHASE_ORDER'
|
||||
UNION ALL
|
||||
SELECT 'PURCHASER', 'MENU_INVENTORY_LEDGER'
|
||||
UNION ALL
|
||||
SELECT 'PURCHASER', 'MENU_MATERIAL_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'WAREHOUSE', 'MENU_PURCHASE_RECEIPT'
|
||||
UNION ALL
|
||||
SELECT 'WAREHOUSE', 'MENU_INVENTORY_LEDGER'
|
||||
UNION ALL
|
||||
SELECT 'WAREHOUSE', 'MENU_COMPLETION_RECEIPT'
|
||||
UNION ALL
|
||||
SELECT 'WAREHOUSE', 'MENU_DELIVERY_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'WAREHOUSE', 'MENU_RETURN_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'WAREHOUSE', 'MENU_QUALITY_INSPECTION'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_WORK_ORDER'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_INVENTORY_LEDGER'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_MATERIAL_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_BOM_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_ROUTE_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_PRODUCT_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_WORK_ORDER'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_OPERATION_REPORT'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_SCRAP_REWORK'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_COMPLETION_RECEIPT'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_QUALITY_INSPECTION'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_BOM_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_ROUTE_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_PRODUCT_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'OPERATOR', 'MENU_OPERATION_REPORT'
|
||||
UNION ALL
|
||||
SELECT 'FINANCE', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'FINANCE', 'MENU_INVENTORY_LEDGER'
|
||||
UNION ALL
|
||||
SELECT 'FINANCE', 'MENU_FINANCE_REPORT'
|
||||
UNION ALL
|
||||
SELECT 'FINANCE', 'MENU_DELIVERY_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'FINANCE', 'MENU_RETURN_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'EQUIP_ADMIN', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'EQUIP_ADMIN', 'MENU_EQUIPMENT_MANAGEMENT'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_SALES_PLANNING'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_PROCESS_CENTER'
|
||||
UNION ALL
|
||||
SELECT 'ADMIN', 'MENU_DATA_MODEL'
|
||||
UNION ALL
|
||||
SELECT 'SALES', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'SALES', 'MENU_SALES_PLANNING'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_SALES_PLANNING'
|
||||
UNION ALL
|
||||
SELECT 'PLANNER', 'MENU_PROCESS_CENTER'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_DASHBOARD'
|
||||
UNION ALL
|
||||
SELECT 'SUPERVISOR', 'MENU_PROCESS_CENTER'
|
||||
) AS rp
|
||||
JOIN sys_role r ON r.role_code = rp.role_code
|
||||
JOIN sys_permission p ON p.permission_code = rp.permission_code
|
||||
LEFT JOIN sys_role_permission existing ON existing.role_id = r.id AND existing.permission_id = p.id
|
||||
WHERE existing.id IS NULL;
|
||||
|
||||
-- 当前仓储角色不再展示流程与工序中心总菜单,改为按仓储页面细分展示
|
||||
DELETE rp
|
||||
FROM sys_role_permission rp
|
||||
JOIN sys_role r ON r.id = rp.role_id
|
||||
JOIN sys_permission p ON p.id = rp.permission_id
|
||||
WHERE r.role_code = 'WAREHOUSE'
|
||||
AND p.permission_code = 'MENU_PROCESS_CENTER';
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,682 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- 基础组织
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'ADMIN', '综合管理部', NULL, 'ADMIN', '总经理', 'ACTIVE', 10, '负责主数据、权限、经营总览'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'ADMIN');
|
||||
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'SALES', '销售部', NULL, 'SALES', '销售主管', 'ACTIVE', 20, '负责客户、订单、交期'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'SALES');
|
||||
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'PURCHASE', '采购部', NULL, 'PURCHASE', '采购主管', 'ACTIVE', 30, '负责钢板采购与供应商协同'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'PURCHASE');
|
||||
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'WAREHOUSE', '仓储部', NULL, 'WAREHOUSE', '仓库主管', 'ACTIVE', 40, '负责原材料、成品、退货、废料收发存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'WAREHOUSE');
|
||||
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'PRODUCTION', '生产部', NULL, 'PRODUCTION', '车间主任', 'ACTIVE', 50, '负责工单、工序、报工'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'PRODUCTION');
|
||||
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'FINANCE', '财务部', NULL, 'FINANCE', '财务主管', 'ACTIVE', 60, '负责成本、对账、报表'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'FINANCE');
|
||||
|
||||
INSERT INTO sys_department (dept_code, dept_name, parent_id, dept_type, manager_name, status, sort_no, remark)
|
||||
SELECT 'EQUIPMENT', '设备部', NULL, 'EQUIPMENT', '设备主管', 'ACTIVE', 70, '负责设备保养、维修、点检'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_department WHERE dept_code = 'EQUIPMENT');
|
||||
|
||||
-- 基础角色
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'ADMIN', '系统管理员', 'SYSTEM', 'ACTIVE', '全局主数据、参数、异常中心'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'ADMIN');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'SALES', '销售员', 'SYSTEM', 'ACTIVE', '客户与订单维护'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'SALES');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'PURCHASER', '采购员', 'SYSTEM', 'ACTIVE', '采购申请、采购订单、到货跟踪'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'PURCHASER');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'WAREHOUSE', '仓库员', 'SYSTEM', 'ACTIVE', '收货、上架、领料、盘点、发货'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'WAREHOUSE');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'PLANNER', '计划员', 'SYSTEM', 'ACTIVE', 'MRP、工单下达、排产'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'PLANNER');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'SUPERVISOR', '车间主管', 'SYSTEM', 'ACTIVE', '工单进度、异常审核、现场调度'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'SUPERVISOR');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'OPERATOR', '加工员工', 'SYSTEM', 'ACTIVE', '扫码报工、报废反馈、停机反馈'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'OPERATOR');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'FINANCE', '财务员', 'SYSTEM', 'ACTIVE', '费用归集、报表、核对'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'FINANCE');
|
||||
|
||||
INSERT INTO sys_role (role_code, role_name, role_scope, status, remark)
|
||||
SELECT 'EQUIP_ADMIN', '设备管理员', 'SYSTEM', 'ACTIVE', '设备台账、保养计划、维修'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_code = 'EQUIP_ADMIN');
|
||||
|
||||
-- 单位
|
||||
INSERT INTO md_unit (unit_code, unit_name, precision_digits)
|
||||
SELECT 'PCS', '件', 0 FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_unit WHERE unit_code = 'PCS');
|
||||
|
||||
INSERT INTO md_unit (unit_code, unit_name, precision_digits)
|
||||
SELECT 'KG', '千克', 3 FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_unit WHERE unit_code = 'KG');
|
||||
|
||||
INSERT INTO md_unit (unit_code, unit_name, precision_digits)
|
||||
SELECT 'TON', '吨', 3 FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_unit WHERE unit_code = 'TON');
|
||||
|
||||
INSERT INTO md_unit (unit_code, unit_name, precision_digits)
|
||||
SELECT 'SHEET', '张', 0 FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_unit WHERE unit_code = 'SHEET');
|
||||
|
||||
-- 物料分类
|
||||
INSERT INTO md_item_category (category_code, category_name, parent_id, item_type, sort_no, status)
|
||||
SELECT 'CAT-RM-PLATE', '钢板原材料', NULL, 'RAW_MATERIAL', 10, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_item_category WHERE category_code = 'CAT-RM-PLATE');
|
||||
|
||||
INSERT INTO md_item_category (category_code, category_name, parent_id, item_type, sort_no, status)
|
||||
SELECT 'CAT-FG-HARDWARE', '五金成品', NULL, 'FINISHED_GOOD', 20, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_item_category WHERE category_code = 'CAT-FG-HARDWARE');
|
||||
|
||||
INSERT INTO md_item_category (category_code, category_name, parent_id, item_type, sort_no, status)
|
||||
SELECT 'CAT-SCRAP-METAL', '金属废料', NULL, 'SCRAP', 30, 'ACTIVE'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_item_category WHERE category_code = 'CAT-SCRAP-METAL');
|
||||
|
||||
-- 供应商
|
||||
INSERT INTO md_supplier (supplier_code, supplier_name, short_name, contact_name, contact_phone, address, lead_time_days, default_tax_rate, status, remark)
|
||||
SELECT 'SUP-NB-JG-001', '宁波嘉钢材料有限公司', '嘉钢材料', '王经理', '13800001111', '宁波市镇海区钢材市场', 5, 0.1300, 'ACTIVE', '本体默认板材供应商'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_supplier WHERE supplier_code = 'SUP-NB-JG-001');
|
||||
|
||||
-- 仓库
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-RM-01', '原材料库', 'RAW', NULL, 'ACTIVE', '自家料、客供料等生产主材库存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-RM-01');
|
||||
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-SEMI-01', '半成品库', 'SEMI', NULL, 'ACTIVE', '加工到一半、尚未完成全部工艺的半成品暂存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-SEMI-01');
|
||||
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-FG-01', '成品库', 'FINISHED', NULL, 'ACTIVE', '完工入库后可发货的成品库存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-FG-01');
|
||||
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-AUX-01', '辅料库', 'AUX', NULL, 'ACTIVE', '手套、薄膜、纸箱、螺丝钉等生产消耗辅料库存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-AUX-01');
|
||||
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-RT-01', '退货仓', 'RETURN', NULL, 'ACTIVE', '客户退货待判定区域'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-RT-01');
|
||||
|
||||
INSERT INTO wh_warehouse (warehouse_code, warehouse_name, warehouse_type, manager_employee_id, status, remark)
|
||||
SELECT 'WH-SCRAP-01', '废料库', 'SCRAP', NULL, 'ACTIVE', '生产废料、边角料、委外废料、报废品等废料库存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01');
|
||||
|
||||
-- 默认库位
|
||||
INSERT INTO wh_location (warehouse_id, location_code, location_name, zone_name, is_default, is_locked, status, remark)
|
||||
SELECT (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-RM-01'), 'RM-A-01', '原料主库位', 'A区', 1, 0, 'ACTIVE', '默认收货库位'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-RM-01')
|
||||
AND location_code = 'RM-A-01'
|
||||
);
|
||||
|
||||
INSERT INTO wh_location (warehouse_id, location_code, location_name, zone_name, is_default, is_locked, status, remark)
|
||||
SELECT (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SEMI-01'), 'SEMI-B-01', '半成品暂存位', 'B区', 1, 0, 'ACTIVE', '半成品暂存'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SEMI-01')
|
||||
AND location_code = 'SEMI-B-01'
|
||||
);
|
||||
|
||||
INSERT INTO wh_location (warehouse_id, location_code, location_name, zone_name, is_default, is_locked, status, remark)
|
||||
SELECT (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-FG-01'), 'FG-C-01', '成品主库位', 'C区', 1, 0, 'ACTIVE', '成品默认库位'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-FG-01')
|
||||
AND location_code = 'FG-C-01'
|
||||
);
|
||||
|
||||
INSERT INTO wh_location (warehouse_id, location_code, location_name, zone_name, is_default, is_locked, status, remark)
|
||||
SELECT (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-AUX-01'), 'AUX-D-01', '辅料主库位', 'D区', 1, 0, 'ACTIVE', '辅料默认库位'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-AUX-01')
|
||||
AND location_code = 'AUX-D-01'
|
||||
);
|
||||
|
||||
INSERT INTO wh_location (warehouse_id, location_code, location_name, zone_name, is_default, is_locked, status, remark)
|
||||
SELECT (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-RT-01'), 'RT-D-01', '退货暂存位', 'D区', 1, 0, 'ACTIVE', '退货待返工或报废'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-RT-01')
|
||||
AND location_code = 'RT-D-01'
|
||||
);
|
||||
|
||||
INSERT INTO wh_location (warehouse_id, location_code, location_name, zone_name, is_default, is_locked, status, remark)
|
||||
SELECT (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01'), 'SCR-E-01', '废料暂存位', 'E区', 1, 0, 'ACTIVE', '金属废料集中存放'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM wh_location
|
||||
WHERE warehouse_id = (SELECT id FROM wh_warehouse WHERE warehouse_code = 'WH-SCRAP-01')
|
||||
AND location_code = 'SCR-E-01'
|
||||
);
|
||||
|
||||
-- 工序
|
||||
INSERT INTO md_process (process_code, process_name, process_type, is_report_required, is_quality_gate, status, remark)
|
||||
SELECT 'PROC-KP', '开平', 'PREP', 1, 0, 'ACTIVE', '钢板整平、裁片准备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process WHERE process_code = 'PROC-KP');
|
||||
|
||||
INSERT INTO md_process (process_code, process_name, process_type, is_report_required, is_quality_gate, status, remark)
|
||||
SELECT 'PROC-CY', '冲压', 'PRESS', 1, 0, 'ACTIVE', '主成形工序,重点监控报废'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process WHERE process_code = 'PROC-CY');
|
||||
|
||||
INSERT INTO md_process (process_code, process_name, process_type, is_report_required, is_quality_gate, status, remark)
|
||||
SELECT 'PROC-MC', '去毛刺', 'FINISH', 1, 0, 'ACTIVE', '去除冲压后毛刺'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process WHERE process_code = 'PROC-MC');
|
||||
|
||||
INSERT INTO md_process (process_code, process_name, process_type, is_report_required, is_quality_gate, status, remark)
|
||||
SELECT 'PROC-ZW', '折弯', 'BEND', 1, 0, 'ACTIVE', '形成结构外形'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process WHERE process_code = 'PROC-ZW');
|
||||
|
||||
INSERT INTO md_process (process_code, process_name, process_type, is_report_required, is_quality_gate, status, remark)
|
||||
SELECT 'PROC-HJ', '焊接', 'WELD', 1, 0, 'ACTIVE', '关键连接工序'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process WHERE process_code = 'PROC-HJ');
|
||||
|
||||
INSERT INTO md_process (process_code, process_name, process_type, is_report_required, is_quality_gate, status, remark)
|
||||
SELECT 'PROC-QA', '检验包装', 'QA', 1, 1, 'ACTIVE', '终检、包装、入库前放行'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process WHERE process_code = 'PROC-QA');
|
||||
|
||||
-- 工作中心
|
||||
INSERT INTO md_work_center (center_code, center_name, dept_id, center_type, shift_pattern, capacity_hours_per_day, status, remark)
|
||||
SELECT 'WC-KP-01', '开平工作中心', (SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'), 'PREP', '两班制', 16.00, 'ACTIVE', '本体板材预处理'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_work_center WHERE center_code = 'WC-KP-01');
|
||||
|
||||
INSERT INTO md_work_center (center_code, center_name, dept_id, center_type, shift_pattern, capacity_hours_per_day, status, remark)
|
||||
SELECT 'WC-CY-01', '冲压工作中心', (SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'), 'PRESS', '两班制', 16.00, 'ACTIVE', '本体冲压成形'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_work_center WHERE center_code = 'WC-CY-01');
|
||||
|
||||
INSERT INTO md_work_center (center_code, center_name, dept_id, center_type, shift_pattern, capacity_hours_per_day, status, remark)
|
||||
SELECT 'WC-MC-01', '去毛刺工作中心', (SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'), 'FINISH', '两班制', 16.00, 'ACTIVE', '去毛刺与修边'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_work_center WHERE center_code = 'WC-MC-01');
|
||||
|
||||
INSERT INTO md_work_center (center_code, center_name, dept_id, center_type, shift_pattern, capacity_hours_per_day, status, remark)
|
||||
SELECT 'WC-ZW-01', '折弯工作中心', (SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'), 'BEND', '两班制', 16.00, 'ACTIVE', '折弯定型'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_work_center WHERE center_code = 'WC-ZW-01');
|
||||
|
||||
INSERT INTO md_work_center (center_code, center_name, dept_id, center_type, shift_pattern, capacity_hours_per_day, status, remark)
|
||||
SELECT 'WC-HJ-01', '焊接工作中心', (SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'), 'WELD', '两班制', 16.00, 'ACTIVE', '焊接与补焊'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_work_center WHERE center_code = 'WC-HJ-01');
|
||||
|
||||
INSERT INTO md_work_center (center_code, center_name, dept_id, center_type, shift_pattern, capacity_hours_per_day, status, remark)
|
||||
SELECT 'WC-QA-01', '检验包装工作中心', (SELECT id FROM sys_department WHERE dept_code = 'PRODUCTION'), 'QA', '白班', 8.00, 'ACTIVE', '终检、包装、贴标'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_work_center WHERE center_code = 'WC-QA-01');
|
||||
|
||||
-- 物料主档:原材料、成品、废料
|
||||
INSERT INTO md_item (
|
||||
item_code, item_name, item_type, category_id, specification, model_no, material_type, material_grade,
|
||||
length_mm, width_mm, thickness_mm, density_kg_m3, theoretical_weight_kg, unit_weight_kg,
|
||||
sales_unit_id, stock_unit_id, purchase_unit_id, safety_stock_qty, safety_stock_weight_kg,
|
||||
scrap_sale_price, status, remark
|
||||
)
|
||||
SELECT
|
||||
'RM-SAP440-500600-2.5', 'SAP440钢板', 'RAW_MATERIAL',
|
||||
(SELECT id FROM md_item_category WHERE category_code = 'CAT-RM-PLATE'),
|
||||
'500*600*2.5', NULL, '钢板', 'SAP440',
|
||||
500.000, 600.000, 2.500, 7850.000, 5.887500, 5.887500,
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'KG'),
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'KG'),
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'KG'),
|
||||
0.000000, 10000.000000,
|
||||
0.0000, 'ACTIVE', '本体标准板材;采购按重量结算,采购倍数按2吨'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_item WHERE item_code = 'RM-SAP440-500600-2.5');
|
||||
|
||||
INSERT INTO md_item (
|
||||
item_code, item_name, item_type, category_id, specification, model_no, material_type, material_grade,
|
||||
length_mm, width_mm, thickness_mm, density_kg_m3, theoretical_weight_kg, unit_weight_kg,
|
||||
sales_unit_id, stock_unit_id, purchase_unit_id, safety_stock_qty, safety_stock_weight_kg,
|
||||
scrap_sale_price, status, remark
|
||||
)
|
||||
SELECT
|
||||
'FG-BT-001', '本体', 'FINISHED_GOOD',
|
||||
(SELECT id FROM md_item_category WHERE category_code = 'CAT-FG-HARDWARE'),
|
||||
'标准结构件', 'BT-V1', '五金结构件', NULL,
|
||||
320.000, 145.000, 0.000, 0.000, 5.200000, 5.200000,
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'PCS'),
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'PCS'),
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'PCS'),
|
||||
500.000000, 0.000000,
|
||||
0.0000, 'ACTIVE', '宁波嘉恒智能本体示例成品,用于演示销售、MRP、工单、成本闭环'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_item WHERE item_code = 'FG-BT-001');
|
||||
|
||||
INSERT INTO md_item (
|
||||
item_code, item_name, item_type, category_id, specification, model_no, material_type, material_grade,
|
||||
length_mm, width_mm, thickness_mm, density_kg_m3, theoretical_weight_kg, unit_weight_kg,
|
||||
sales_unit_id, stock_unit_id, purchase_unit_id, safety_stock_qty, safety_stock_weight_kg,
|
||||
scrap_sale_price, status, remark
|
||||
)
|
||||
SELECT
|
||||
'SCR-SAP440-EDGE', 'SAP440边角废料', 'SCRAP',
|
||||
(SELECT id FROM md_item_category WHERE category_code = 'CAT-SCRAP-METAL'),
|
||||
'冲压边角料', NULL, '金属废料', 'SAP440',
|
||||
0.000, 0.000, 0.000, 7850.000, 1.000000, 1.000000,
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'KG'),
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'KG'),
|
||||
(SELECT id FROM md_unit WHERE unit_code = 'KG'),
|
||||
0.000000, 0.000000,
|
||||
1.8000, 'ACTIVE', '本体生产过程中产生的可售废料'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_item WHERE item_code = 'SCR-SAP440-EDGE');
|
||||
|
||||
-- 原材料扩展
|
||||
INSERT INTO md_material (
|
||||
item_id, default_supplier_id, purchase_calc_mode, min_purchase_qty, purchase_multiple_qty,
|
||||
purchase_multiple_weight_kg, lead_time_days, quality_rule
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_item WHERE item_code = 'RM-SAP440-500600-2.5'),
|
||||
(SELECT id FROM md_supplier WHERE supplier_code = 'SUP-NB-JG-001'),
|
||||
'BY_WEIGHT', 2000.000000, 0.000000, 2000.000000, 5,
|
||||
'需提供材质证明;来料需检验厚度、表面状态、重量偏差'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_material
|
||||
WHERE item_id = (SELECT id FROM md_item WHERE item_code = 'RM-SAP440-500600-2.5')
|
||||
);
|
||||
|
||||
-- 产品扩展
|
||||
INSERT INTO md_product (
|
||||
item_id, drawing_no, product_family, version_no, standard_output_qty,
|
||||
allowed_scrap_rate, quality_standard
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_item WHERE item_code = 'FG-BT-001'),
|
||||
'JH-BT-001', '结构件', 'V1.0', 1.000000, 0.0350,
|
||||
'尺寸公差控制在图纸范围内;焊点连续;表面无明显压伤、裂纹、毛刺'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_product
|
||||
WHERE item_id = (SELECT id FROM md_item WHERE item_code = 'FG-BT-001')
|
||||
);
|
||||
|
||||
-- BOM
|
||||
INSERT INTO md_bom (bom_code, product_item_id, version_no, is_default, status, effective_date, expire_date, remark)
|
||||
SELECT
|
||||
'BOM-BT-001',
|
||||
(SELECT id FROM md_item WHERE item_code = 'FG-BT-001'),
|
||||
'V1.0', 1, 'ACTIVE', CURRENT_DATE(), NULL,
|
||||
'本体标准BOM:单件毛重5.9kg,单件净重5.2kg'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_bom WHERE bom_code = 'BOM-BT-001');
|
||||
|
||||
INSERT INTO md_bom_item (
|
||||
bom_id, seq_no, material_item_id, usage_type, qty_per_piece, net_weight_per_piece_kg,
|
||||
gross_weight_per_piece_kg, loss_rate, issue_over_tolerance_rate, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_bom WHERE bom_code = 'BOM-BT-001'),
|
||||
10,
|
||||
(SELECT id FROM md_item WHERE item_code = 'RM-SAP440-500600-2.5'),
|
||||
'WEIGHT', 1.000000, 5.200000, 5.900000, 0.1180, 0.0200,
|
||||
'按单件毛重5.9kg参与MRP;按采购2吨倍数向上取整'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_bom_item
|
||||
WHERE bom_id = (SELECT id FROM md_bom WHERE bom_code = 'BOM-BT-001')
|
||||
AND seq_no = 10
|
||||
);
|
||||
|
||||
-- 工艺路线
|
||||
INSERT INTO md_process_route (
|
||||
route_code, route_name, product_item_id, version_no, is_default, status, effective_date, expire_date, remark
|
||||
)
|
||||
SELECT
|
||||
'ROUTE-BT-001', '本体标准工艺路线',
|
||||
(SELECT id FROM md_item WHERE item_code = 'FG-BT-001'),
|
||||
'V1.0', 1, 'ACTIVE', CURRENT_DATE(), NULL,
|
||||
'适用于本体标准批量生产的六道工序路线'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM md_process_route WHERE route_code = 'ROUTE-BT-001');
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001'),
|
||||
10,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-KP'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-KP-01'),
|
||||
'开平',
|
||||
20.00, 6.00, 0.12, 0.18, 0.00, 0.0050, 1, 0, 'ACTIVE', '板材整平、送料准备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_process_route_operation
|
||||
WHERE route_id = (SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001')
|
||||
AND seq_no = 10
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001'),
|
||||
20,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-CY'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-CY-01'),
|
||||
'冲压',
|
||||
45.00, 9.00, 0.34, 0.46, 0.00, 0.0200, 1, 1, 'ACTIVE', '主成形工序,模具与板材波动需重点监控'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_process_route_operation
|
||||
WHERE route_id = (SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001')
|
||||
AND seq_no = 20
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001'),
|
||||
30,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-MC'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-MC-01'),
|
||||
'去毛刺',
|
||||
15.00, 5.00, 0.08, 0.06, 0.00, 0.0080, 1, 0, 'ACTIVE', '清理毛刺与锐边'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_process_route_operation
|
||||
WHERE route_id = (SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001')
|
||||
AND seq_no = 30
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001'),
|
||||
40,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-ZW'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-ZW-01'),
|
||||
'折弯',
|
||||
20.00, 8.00, 0.21, 0.22, 0.00, 0.0100, 1, 1, 'ACTIVE', '关键角度成形控制'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_process_route_operation
|
||||
WHERE route_id = (SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001')
|
||||
AND seq_no = 40
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001'),
|
||||
50,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-HJ'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-HJ-01'),
|
||||
'焊接',
|
||||
30.00, 15.00, 0.48, 0.28, 0.00, 0.0150, 1, 1, 'ACTIVE', '焊缝质量对成品稳定性影响大'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_process_route_operation
|
||||
WHERE route_id = (SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001')
|
||||
AND seq_no = 50
|
||||
);
|
||||
|
||||
INSERT INTO md_process_route_operation (
|
||||
route_id, seq_no, process_id, work_center_id, operation_name,
|
||||
std_setup_minutes, std_cycle_seconds, std_labor_cost, std_machine_cost, std_outsource_cost,
|
||||
allowed_scrap_rate, report_required, is_key_operation, status, remark
|
||||
)
|
||||
SELECT
|
||||
(SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001'),
|
||||
60,
|
||||
(SELECT id FROM md_process WHERE process_code = 'PROC-QA'),
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-QA-01'),
|
||||
'检验包装',
|
||||
12.00, 10.00, 0.14, 0.03, 0.00, 0.0020, 1, 1, 'ACTIVE', '终检不合格件转返工或报废'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM md_process_route_operation
|
||||
WHERE route_id = (SELECT id FROM md_process_route WHERE route_code = 'ROUTE-BT-001')
|
||||
AND seq_no = 60
|
||||
);
|
||||
|
||||
-- 设备台账
|
||||
INSERT INTO em_equipment (
|
||||
equipment_code, equipment_name, category_name, work_center_id, manufacturer,
|
||||
model_no, install_date, rated_power_kw, occupied_area_sqm, maintenance_cycle_hours,
|
||||
last_maintenance_at, next_maintenance_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EQ-KP-01', '开平机 01', '开平机',
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-KP-01'),
|
||||
'宁波精虎机械', 'KP-1600', '2024-01-15', 18.00, 12.50, 220.00,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 20 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 10 DAY),
|
||||
'IDLE', '本体板材预处理设备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_equipment WHERE equipment_code = 'EQ-KP-01');
|
||||
|
||||
INSERT INTO em_equipment (
|
||||
equipment_code, equipment_name, category_name, work_center_id, manufacturer,
|
||||
model_no, install_date, rated_power_kw, occupied_area_sqm, maintenance_cycle_hours,
|
||||
last_maintenance_at, next_maintenance_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EQ-CY-01', '冲床 01', '冲床',
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-CY-01'),
|
||||
'扬力集团', 'JH21-125T', '2024-01-20', 22.00, 16.00, 280.00,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 15 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 7 DAY),
|
||||
'IDLE', '本体主冲压设备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_equipment WHERE equipment_code = 'EQ-CY-01');
|
||||
|
||||
INSERT INTO em_equipment (
|
||||
equipment_code, equipment_name, category_name, work_center_id, manufacturer,
|
||||
model_no, install_date, rated_power_kw, occupied_area_sqm, maintenance_cycle_hours,
|
||||
last_maintenance_at, next_maintenance_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EQ-MC-01', '去毛刺机 01', '去毛刺机',
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-MC-01'),
|
||||
'苏州锐虎机电', 'MC-800', '2024-02-08', 7.50, 8.00, 180.00,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 18 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 12 DAY),
|
||||
'IDLE', '本体去毛刺设备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_equipment WHERE equipment_code = 'EQ-MC-01');
|
||||
|
||||
INSERT INTO em_equipment (
|
||||
equipment_code, equipment_name, category_name, work_center_id, manufacturer,
|
||||
model_no, install_date, rated_power_kw, occupied_area_sqm, maintenance_cycle_hours,
|
||||
last_maintenance_at, next_maintenance_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EQ-ZW-01', '折弯机 01', '折弯机',
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-ZW-01'),
|
||||
'江苏亚威', 'PBH-110', '2024-02-16', 15.00, 14.00, 240.00,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 22 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 8 DAY),
|
||||
'IDLE', '本体折弯设备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_equipment WHERE equipment_code = 'EQ-ZW-01');
|
||||
|
||||
INSERT INTO em_equipment (
|
||||
equipment_code, equipment_name, category_name, work_center_id, manufacturer,
|
||||
model_no, install_date, rated_power_kw, occupied_area_sqm, maintenance_cycle_hours,
|
||||
last_maintenance_at, next_maintenance_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EQ-HJ-01', '焊机 01', '焊机',
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-HJ-01'),
|
||||
'松下焊机', 'YD-350', '2024-03-01', 9.00, 6.00, 160.00,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 12 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 14 DAY),
|
||||
'IDLE', '本体焊接设备'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_equipment WHERE equipment_code = 'EQ-HJ-01');
|
||||
|
||||
INSERT INTO em_equipment (
|
||||
equipment_code, equipment_name, category_name, work_center_id, manufacturer,
|
||||
model_no, install_date, rated_power_kw, occupied_area_sqm, maintenance_cycle_hours,
|
||||
last_maintenance_at, next_maintenance_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'EQ-QA-01', '终检包装工位 01', '检验工位',
|
||||
(SELECT id FROM md_work_center WHERE center_code = 'WC-QA-01'),
|
||||
'嘉恒内部配置', 'QA-STATION', '2024-03-10', 1.50, 4.00, 300.00,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 25 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 20 DAY),
|
||||
'IDLE', '终检与包装工位'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_equipment WHERE equipment_code = 'EQ-QA-01');
|
||||
|
||||
-- 设备保养计划
|
||||
INSERT INTO em_maintenance_plan (
|
||||
plan_code, equipment_id, plan_name, maintenance_type, cycle_hours, cycle_days,
|
||||
last_execute_at, next_execute_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'MP-EQ-KP-01',
|
||||
(SELECT id FROM em_equipment WHERE equipment_code = 'EQ-KP-01'),
|
||||
'开平机周期保养', 'PREVENTIVE', 220.00, 30,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 20 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 10 DAY),
|
||||
'ACTIVE', '每220小时或每30天执行保养'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_maintenance_plan WHERE plan_code = 'MP-EQ-KP-01');
|
||||
|
||||
INSERT INTO em_maintenance_plan (
|
||||
plan_code, equipment_id, plan_name, maintenance_type, cycle_hours, cycle_days,
|
||||
last_execute_at, next_execute_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'MP-EQ-CY-01',
|
||||
(SELECT id FROM em_equipment WHERE equipment_code = 'EQ-CY-01'),
|
||||
'冲床周期保养', 'PREVENTIVE', 280.00, 30,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 15 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 7 DAY),
|
||||
'ACTIVE', '冲床模具与润滑需重点保养'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_maintenance_plan WHERE plan_code = 'MP-EQ-CY-01');
|
||||
|
||||
INSERT INTO em_maintenance_plan (
|
||||
plan_code, equipment_id, plan_name, maintenance_type, cycle_hours, cycle_days,
|
||||
last_execute_at, next_execute_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'MP-EQ-MC-01',
|
||||
(SELECT id FROM em_equipment WHERE equipment_code = 'EQ-MC-01'),
|
||||
'去毛刺机周期保养', 'PREVENTIVE', 180.00, 30,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 18 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 12 DAY),
|
||||
'ACTIVE', '砂轮与集尘装置维护'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_maintenance_plan WHERE plan_code = 'MP-EQ-MC-01');
|
||||
|
||||
INSERT INTO em_maintenance_plan (
|
||||
plan_code, equipment_id, plan_name, maintenance_type, cycle_hours, cycle_days,
|
||||
last_execute_at, next_execute_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'MP-EQ-ZW-01',
|
||||
(SELECT id FROM em_equipment WHERE equipment_code = 'EQ-ZW-01'),
|
||||
'折弯机周期保养', 'PREVENTIVE', 240.00, 30,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 22 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 8 DAY),
|
||||
'ACTIVE', '液压系统与模具保养'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_maintenance_plan WHERE plan_code = 'MP-EQ-ZW-01');
|
||||
|
||||
INSERT INTO em_maintenance_plan (
|
||||
plan_code, equipment_id, plan_name, maintenance_type, cycle_hours, cycle_days,
|
||||
last_execute_at, next_execute_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'MP-EQ-HJ-01',
|
||||
(SELECT id FROM em_equipment WHERE equipment_code = 'EQ-HJ-01'),
|
||||
'焊机周期保养', 'PREVENTIVE', 160.00, 30,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 12 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 14 DAY),
|
||||
'ACTIVE', '焊枪与送丝机构检查'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_maintenance_plan WHERE plan_code = 'MP-EQ-HJ-01');
|
||||
|
||||
INSERT INTO em_maintenance_plan (
|
||||
plan_code, equipment_id, plan_name, maintenance_type, cycle_hours, cycle_days,
|
||||
last_execute_at, next_execute_at, status, remark
|
||||
)
|
||||
SELECT
|
||||
'MP-EQ-QA-01',
|
||||
(SELECT id FROM em_equipment WHERE equipment_code = 'EQ-QA-01'),
|
||||
'终检工位周期保养', 'PREVENTIVE', 300.00, 45,
|
||||
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 25 DAY), DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 20 DAY),
|
||||
'ACTIVE', '量具点检与包装工位维护'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM em_maintenance_plan WHERE plan_code = 'MP-EQ-QA-01');
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,116 @@
|
||||
CREATE TABLE IF NOT EXISTS po_purchase_order_sales_order (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
purchase_order_id BIGINT NOT NULL,
|
||||
sales_order_id BIGINT NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uq_po_so_link (purchase_order_id, sales_order_id),
|
||||
KEY idx_po_so_link_so (sales_order_id),
|
||||
CONSTRAINT fk_po_so_link_po FOREIGN KEY (purchase_order_id) REFERENCES po_purchase_order(id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_po_so_link_so FOREIGN KEY (sales_order_id) REFERENCES so_sales_order(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
SET @idx_wh_stock_lot_item_lot_no_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
AND INDEX_NAME = 'idx_wh_stock_lot_item_lot_no'
|
||||
);
|
||||
SET @idx_wh_stock_lot_item_lot_no_sql := IF(
|
||||
@idx_wh_stock_lot_item_lot_no_exists = 0,
|
||||
'ALTER TABLE wh_stock_lot ADD INDEX idx_wh_stock_lot_item_lot_no (item_id, lot_no)',
|
||||
'SELECT ''idx_wh_stock_lot_item_lot_no already exists'''
|
||||
);
|
||||
PREPARE idx_wh_stock_lot_item_lot_no_stmt FROM @idx_wh_stock_lot_item_lot_no_sql;
|
||||
EXECUTE idx_wh_stock_lot_item_lot_no_stmt;
|
||||
DEALLOCATE PREPARE idx_wh_stock_lot_item_lot_no_stmt;
|
||||
|
||||
SET @duplicate_stock_lot_no_groups := (
|
||||
SELECT COUNT(*)
|
||||
FROM (
|
||||
SELECT lot_no
|
||||
FROM wh_stock_lot
|
||||
WHERE lot_no IS NOT NULL
|
||||
GROUP BY lot_no
|
||||
HAVING COUNT(*) > 1
|
||||
) duplicated_lots
|
||||
);
|
||||
SET @uq_wh_stock_lot_lot_no_sql := (
|
||||
SELECT IF(
|
||||
@duplicate_stock_lot_no_groups > 0,
|
||||
CONCAT('SIGNAL SQLSTATE ''45000'' SET MESSAGE_TEXT = ''wh_stock_lot.lot_no存在重复,重复批次号组数=', @duplicate_stock_lot_no_groups, ',请先清理后再执行迁移'''),
|
||||
IF(
|
||||
NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM (
|
||||
SELECT INDEX_NAME
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'wh_stock_lot'
|
||||
GROUP BY INDEX_NAME
|
||||
HAVING MAX(NON_UNIQUE) = 0
|
||||
AND COUNT(*) = 1
|
||||
AND SUM(CASE WHEN COLUMN_NAME = 'lot_no' THEN 1 ELSE 0 END) = 1
|
||||
) existing_unique_lot_no_indexes
|
||||
),
|
||||
'ALTER TABLE wh_stock_lot ADD UNIQUE KEY uq_wh_stock_lot_lot_no (lot_no)',
|
||||
'SELECT ''uq_wh_stock_lot_lot_no already exists'''
|
||||
)
|
||||
)
|
||||
);
|
||||
PREPARE uq_wh_stock_lot_lot_no_stmt FROM @uq_wh_stock_lot_lot_no_sql;
|
||||
EXECUTE uq_wh_stock_lot_lot_no_stmt;
|
||||
DEALLOCATE PREPARE uq_wh_stock_lot_lot_no_stmt;
|
||||
|
||||
SET @idx_pp_issue_source_lot_exists := (
|
||||
SELECT COUNT(DISTINCT INDEX_NAME)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_work_order_material_issue'
|
||||
AND COLUMN_NAME = 'source_lot_id'
|
||||
);
|
||||
SET @idx_pp_issue_source_lot_sql := IF(
|
||||
@idx_pp_issue_source_lot_exists = 0,
|
||||
'ALTER TABLE pp_work_order_material_issue ADD INDEX idx_pp_issue_source_lot (source_lot_id)',
|
||||
'SELECT ''source_lot_id index already exists on pp_work_order_material_issue'''
|
||||
);
|
||||
PREPARE idx_pp_issue_source_lot_stmt FROM @idx_pp_issue_source_lot_sql;
|
||||
EXECUTE idx_pp_issue_source_lot_stmt;
|
||||
DEALLOCATE PREPARE idx_pp_issue_source_lot_stmt;
|
||||
|
||||
SET @uk_material_sub_batch_no_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'pp_work_order_material_issue'
|
||||
AND INDEX_NAME = 'uk_material_sub_batch_no'
|
||||
);
|
||||
SET @drop_uk_material_sub_batch_no_sql := IF(
|
||||
@uk_material_sub_batch_no_exists > 0,
|
||||
'ALTER TABLE pp_work_order_material_issue DROP INDEX uk_material_sub_batch_no',
|
||||
'SELECT ''uk_material_sub_batch_no already absent on pp_work_order_material_issue'''
|
||||
);
|
||||
PREPARE drop_uk_material_sub_batch_no_stmt FROM @drop_uk_material_sub_batch_no_sql;
|
||||
EXECUTE drop_uk_material_sub_batch_no_stmt;
|
||||
DEALLOCATE PREPARE drop_uk_material_sub_batch_no_stmt;
|
||||
|
||||
INSERT INTO po_purchase_order_sales_order (purchase_order_id, sales_order_id, created_at, updated_at)
|
||||
SELECT DISTINCT po.id, so.id, NOW(), NOW()
|
||||
FROM po_purchase_order po
|
||||
JOIN po_purchase_order_item poi ON poi.purchase_order_id = po.id
|
||||
JOIN mrp_material_demand md ON md.id = poi.source_demand_id
|
||||
JOIN so_sales_order_item soi ON soi.id = md.sales_order_item_id
|
||||
JOIN so_sales_order so ON so.id = soi.sales_order_id
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM po_purchase_order_sales_order existing
|
||||
WHERE existing.purchase_order_id = po.id
|
||||
AND existing.sales_order_id = so.id
|
||||
);
|
||||
|
||||
UPDATE pp_work_order_material_issue issue
|
||||
JOIN wh_stock_lot lot ON lot.id = issue.source_lot_id
|
||||
SET issue.material_sub_batch_no = lot.lot_no
|
||||
WHERE issue.material_sub_batch_no IS NULL
|
||||
OR issue.material_sub_batch_no <> lot.lot_no;
|
||||
@@ -0,0 +1,80 @@
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_raw_lot_rename;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_raw_lot_existing_seq;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp_raw_lot_existing_seq AS
|
||||
SELECT
|
||||
l.item_id,
|
||||
COALESCE(
|
||||
MAX(
|
||||
CASE
|
||||
WHEN REPLACE(l.lot_no, CONCAT('JH_', i.item_code, '_'), '') REGEXP '^[0-9]{4}$'
|
||||
THEN CAST(REPLACE(l.lot_no, CONCAT('JH_', i.item_code, '_'), '') AS UNSIGNED)
|
||||
ELSE 0
|
||||
END
|
||||
),
|
||||
0
|
||||
) AS max_seq
|
||||
FROM wh_stock_lot l
|
||||
JOIN md_item i ON i.id = l.item_id
|
||||
JOIN wh_warehouse w ON w.id = l.warehouse_id
|
||||
WHERE i.item_type = 'RAW_MATERIAL'
|
||||
AND w.warehouse_type = 'RAW'
|
||||
AND l.lot_no LIKE CONCAT('JH_', i.item_code, '_%')
|
||||
GROUP BY l.item_id;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp_raw_lot_rename AS
|
||||
SELECT
|
||||
ranked.lot_id,
|
||||
ranked.old_lot_no,
|
||||
CONCAT('JH_', ranked.item_code, '_', LPAD(ranked.max_seq + ranked.seq_no, 4, '0')) AS new_lot_no
|
||||
FROM (
|
||||
SELECT
|
||||
l.id AS lot_id,
|
||||
l.item_id,
|
||||
i.item_code,
|
||||
l.lot_no AS old_lot_no,
|
||||
COALESCE(seq.max_seq, 0) AS max_seq,
|
||||
ROW_NUMBER() OVER (PARTITION BY l.item_id ORDER BY l.id) AS seq_no
|
||||
FROM wh_stock_lot l
|
||||
JOIN md_item i ON i.id = l.item_id
|
||||
JOIN wh_warehouse w ON w.id = l.warehouse_id
|
||||
LEFT JOIN tmp_raw_lot_existing_seq seq ON seq.item_id = l.item_id
|
||||
WHERE i.item_type = 'RAW_MATERIAL'
|
||||
AND w.warehouse_type = 'RAW'
|
||||
AND l.lot_no NOT LIKE CONCAT('JH_', i.item_code, '_%')
|
||||
) ranked;
|
||||
|
||||
UPDATE po_receipt_item pri
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = pri.lot_no
|
||||
SET pri.lot_no = map.new_lot_no;
|
||||
|
||||
UPDATE pp_work_order_material_issue issue_row
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = issue_row.material_sub_batch_no
|
||||
SET issue_row.material_sub_batch_no = map.new_lot_no;
|
||||
|
||||
UPDATE pp_completion_receipt_item item_row
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = item_row.source_material_sub_batch_no
|
||||
SET item_row.source_material_sub_batch_no = map.new_lot_no;
|
||||
|
||||
UPDATE wh_stock_lot source_row
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = source_row.material_sub_batch_no
|
||||
SET source_row.material_sub_batch_no = map.new_lot_no;
|
||||
|
||||
UPDATE wh_stock_lot source_row
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = source_row.source_material_sub_batch_no
|
||||
SET source_row.source_material_sub_batch_no = map.new_lot_no;
|
||||
|
||||
UPDATE wh_stocktake_line line_row
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = line_row.lot_no
|
||||
SET line_row.lot_no = map.new_lot_no;
|
||||
|
||||
UPDATE wh_stocktake_line line_row
|
||||
JOIN tmp_raw_lot_rename map ON map.old_lot_no = line_row.source_material_sub_batch_no
|
||||
SET line_row.source_material_sub_batch_no = map.new_lot_no;
|
||||
|
||||
UPDATE wh_stock_lot lot_row
|
||||
JOIN tmp_raw_lot_rename map ON map.lot_id = lot_row.id
|
||||
SET lot_row.lot_no = map.new_lot_no;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_raw_lot_rename;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_raw_lot_existing_seq;
|
||||
@@ -0,0 +1,120 @@
|
||||
USE jiaheng_erp;
|
||||
|
||||
SET @db_name = DATABASE();
|
||||
|
||||
-- 1) 产品版本:允许同一产品编码保留多个版本,因此取消 md_item.item_code 的全局唯一约束。
|
||||
SET @drop_md_item_code_unique = (
|
||||
SELECT IFNULL(
|
||||
(
|
||||
SELECT CONCAT('ALTER TABLE md_item DROP INDEX `', index_name, '`')
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @db_name
|
||||
AND table_name = 'md_item'
|
||||
AND column_name = 'item_code'
|
||||
AND non_unique = 0
|
||||
AND index_name <> 'PRIMARY'
|
||||
GROUP BY index_name
|
||||
HAVING COUNT(*) = 1
|
||||
LIMIT 1
|
||||
),
|
||||
'SELECT 1'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @drop_md_item_code_unique;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @create_md_item_code_index = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @db_name
|
||||
AND table_name = 'md_item'
|
||||
AND index_name = 'idx_md_item_code'
|
||||
),
|
||||
'SELECT 1',
|
||||
'CREATE INDEX idx_md_item_code ON md_item (item_code)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @create_md_item_code_index;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2) BOM 版本:同一 BOM 编码允许多个版本,唯一性改为 (bom_code, version_no)。
|
||||
SET @drop_md_bom_code_unique = (
|
||||
SELECT IFNULL(
|
||||
(
|
||||
SELECT CONCAT('ALTER TABLE md_bom DROP INDEX `', index_name, '`')
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @db_name
|
||||
AND table_name = 'md_bom'
|
||||
AND column_name = 'bom_code'
|
||||
AND non_unique = 0
|
||||
AND index_name <> 'PRIMARY'
|
||||
GROUP BY index_name
|
||||
HAVING COUNT(*) = 1
|
||||
LIMIT 1
|
||||
),
|
||||
'SELECT 1'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @drop_md_bom_code_unique;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @create_md_bom_code_version_unique = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @db_name
|
||||
AND table_name = 'md_bom'
|
||||
AND index_name = 'uk_bom_code_version'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE md_bom ADD UNIQUE KEY uk_bom_code_version (bom_code, version_no)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @create_md_bom_code_version_unique;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3) 工艺路线版本:同一工艺路线编码允许多个版本,唯一性改为 (route_code, version_no)。
|
||||
SET @drop_md_route_code_unique = (
|
||||
SELECT IFNULL(
|
||||
(
|
||||
SELECT CONCAT('ALTER TABLE md_process_route DROP INDEX `', index_name, '`')
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @db_name
|
||||
AND table_name = 'md_process_route'
|
||||
AND column_name = 'route_code'
|
||||
AND non_unique = 0
|
||||
AND index_name <> 'PRIMARY'
|
||||
GROUP BY index_name
|
||||
HAVING COUNT(*) = 1
|
||||
LIMIT 1
|
||||
),
|
||||
'SELECT 1'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @drop_md_route_code_unique;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @create_md_route_code_version_unique = (
|
||||
SELECT IF(
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = @db_name
|
||||
AND table_name = 'md_process_route'
|
||||
AND index_name = 'uk_route_code_version'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE md_process_route ADD UNIQUE KEY uk_route_code_version (route_code, version_no)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @create_md_route_code_version_unique;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
Reference in New Issue
Block a user