From 2c4bc1808f272b7d7282d1b8ba416d606ebc7df5 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期五, 18 九月 2026 15:25:31 +0800
Subject: [PATCH] refactor(生产核算): 成品/白盒归属改为按工序指定
---
sql/production_costing_config.sql | 188 +++++++++++++++++++++++++++-------------------
1 files changed, 111 insertions(+), 77 deletions(-)
diff --git a/sql/production_costing_config.sql b/sql/production_costing_config.sql
index b386772..a1a029b 100644
--- a/sql/production_costing_config.sql
+++ b/sql/production_costing_config.sql
@@ -1,46 +1,63 @@
-- ============================================================
--- 鐢熶骇鏍哥畻锛堟垚鍝侀儴闂� / 鐧界洅閮ㄩ棬锛夐厤缃笌缁撴瀯琛ュ厖鑴氭湰
--- 鏁版嵁搴擄細product-inventory-management-new-pro
--- 璇存槑锛氭湰鍦板簱缁撴瀯钀藉悗浜庝唬鐮侊紝production_product_main 缂哄皯
--- 鎶ュ伐缁撴灉/瀹℃牳鐩稿叧鍒楋紝杩欓噷琛ラ綈锛涘苟鏂板鏍哥畻閰嶇疆琛ㄤ笌婕旂ず鏁版嵁銆�
+-- 鐢熶骇鏍哥畻锛堟垚鍝侀儴闂� / 鐧界洅閮ㄩ棬锛夋暟鎹簱鑴氭湰
+-- 鐩爣搴擄細product-inventory-management-new-pro锛堟寜瀹為檯鐜鏇挎崲锛�
+-- 璇存槑锛�
+-- 绗� 1 閮ㄥ垎锛氱粨鏋勫彉鏇达紙琛ュ垪 + 鏂板缓閰嶇疆琛級鈥斺�� 蹇呴』鎵ц锛屽箓绛夊彲閲嶅鎵ц
+-- 绗� 2 閮ㄥ垎锛氭紨绀烘暟鎹� 鈥斺�� 鍙�夛紝浠呯敤浜庢湰鍦�/婕旂ず鐜锛屾寮忕幆澧冭鍕挎墽琛屾垨鎸夐渶璋冩暣
+-- 鎴愬搧/鐧界洅 鐨勫綊灞烇細鍦ㄣ�愬伐搴忕被鍨嬮厤缃�戦噷鐩存帴鎶婃煇涓伐搴忔寚瀹氫负 鎴愬搧 鎴� 鐧界洅
+-- 锛�1=鎴愬搧閮ㄩ棬锛�2=鐧界洅閮ㄩ棬锛�
-- ============================================================
SET NAMES utf8mb4;
--- ------------------------------------------------------------
--- 1. 琛ュ厖 production_product_main 缂哄け鍒楋紙鎶ュ伐缁撴灉 / 瀹℃牳 / 琛ヤ慨鐞嗗伐鏃讹級
--- ------------------------------------------------------------
-ALTER TABLE `production_product_main`
- ADD COLUMN `report_type` int NULL COMMENT '鎶ュ伐缁撴灉绫诲瀷锛�0鍚堟牸锛�1杞诲井杩斿伐锛�2涓ラ噸杩斿伐锛�3鎶ュ簾' AFTER `status`,
- ADD COLUMN `audit_status` int NULL DEFAULT 1 COMMENT '瀹℃牳鐘舵�侊細0寰呭鏍革紝1瀹℃牳閫氳繃锛�2瀹℃牳涓嶉�氳繃' AFTER `report_type`,
- ADD COLUMN `audit_remark` varchar(255) NULL COMMENT '瀹℃牳鎰忚' AFTER `audit_status`,
- ADD COLUMN `repair_work_hour` decimal(10,2) NULL DEFAULT 0 COMMENT '琛ヤ慨鐞嗗伐鏃�' AFTER `work_hour`;
+/* ============================================================
+ * 绗� 1 閮ㄥ垎锛氱粨鏋勫彉鏇达紙蹇呴』鎵ц锛�
+ * ============================================================ */
--- 宸插瓨鍦ㄦ姤宸ユ暟鎹粯璁よ涓猴細瀹℃牳閫氳繃銆佸悎鏍�
+-- 1.1 琛ラ綈 production_product_main 缂哄け鍒�
+SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='production_product_main' AND COLUMN_NAME='report_type');
+SET @s := IF(@c=0, 'ALTER TABLE `production_product_main` ADD COLUMN `report_type` int NULL COMMENT ''鎶ュ伐缁撴灉绫诲瀷锛�0鍚堟牸锛�1杞诲井杩斿伐锛�2涓ラ噸杩斿伐锛�3鎶ュ簾'' AFTER `status`', 'DO 0');
+PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
+
+SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='production_product_main' AND COLUMN_NAME='audit_status');
+SET @s := IF(@c=0, 'ALTER TABLE `production_product_main` ADD COLUMN `audit_status` int NULL DEFAULT 1 COMMENT ''瀹℃牳鐘舵�侊細0寰呭鏍革紝1瀹℃牳閫氳繃锛�2瀹℃牳涓嶉�氳繃'' AFTER `report_type`', 'DO 0');
+PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
+
+SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='production_product_main' AND COLUMN_NAME='audit_remark');
+SET @s := IF(@c=0, 'ALTER TABLE `production_product_main` ADD COLUMN `audit_remark` varchar(255) NULL COMMENT ''瀹℃牳鎰忚'' AFTER `audit_status`', 'DO 0');
+PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
+
+SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='production_product_main' AND COLUMN_NAME='repair_work_hour');
+SET @s := IF(@c=0, 'ALTER TABLE `production_product_main` ADD COLUMN `repair_work_hour` decimal(10,2) NULL DEFAULT 0 COMMENT ''琛ヤ慨鐞嗗伐鏃�'' AFTER `work_hour`', 'DO 0');
+PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
+
+-- 1.2 琛ラ綈 product 缂哄け鍒� standard_quantity
+SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='product' AND COLUMN_NAME='standard_quantity');
+SET @s := IF(@c=0, 'ALTER TABLE `product` ADD COLUMN `standard_quantity` decimal(18,4) NULL COMMENT ''鏍囧噯鏁伴噺'' AFTER `product_name`', 'DO 0');
+PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
+
+-- 1.3 宸插瓨鍦ㄦ姤宸ユ暟鎹粯璁わ細瀹℃牳閫氳繃銆佸悎鏍�
UPDATE `production_product_main` SET `report_type` = 0 WHERE `report_type` IS NULL;
UPDATE `production_product_main` SET `audit_status` = 1 WHERE `audit_status` IS NULL;
--- ------------------------------------------------------------
--- 2. 鏂板鏍哥畻閰嶇疆琛�
--- ------------------------------------------------------------
-DROP TABLE IF EXISTS `production_costing_dept`;
-CREATE TABLE `production_costing_dept` (
+-- 1.4 鏂板缓鏍哥畻閰嶇疆琛�
+CREATE TABLE IF NOT EXISTS `production_costing_process` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
- `dept_id` bigint NULL COMMENT '閮ㄩ棬ID(sys_dept.dept_id)',
- `dept_type` int NULL COMMENT '閮ㄩ棬绫诲瀷锛�1鎴愬搧閮ㄩ棬锛�2鐧界洅閮ㄩ棬',
+ `process_id` bigint NULL COMMENT '宸ュ簭ID(technology_operation.id)',
+ `dept_type` int NULL COMMENT '绫诲瀷锛�1鎴愬搧閮ㄩ棬锛�2鐧界洅閮ㄩ棬',
`remark` varchar(255) NULL COMMENT '澶囨敞',
`create_user` bigint NULL COMMENT '鍒涘缓浜�',
`create_time` datetime NULL COMMENT '鍒涘缓鏃堕棿',
`update_user` bigint NULL COMMENT '淇敼浜�',
`update_time` datetime NULL COMMENT '淇敼鏃堕棿',
- PRIMARY KEY (`id`)
-) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '鐢熶骇鏍哥畻-閮ㄩ棬绫诲瀷閰嶇疆';
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_process` (`process_id`)
+) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '鐢熶骇鏍哥畻-宸ュ簭绫诲瀷閰嶇疆';
-DROP TABLE IF EXISTS `production_costing_standard`;
-CREATE TABLE `production_costing_standard` (
+CREATE TABLE IF NOT EXISTS `production_costing_standard` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
- `dept_type` int NULL COMMENT '閮ㄩ棬绫诲瀷锛�1鎴愬搧锛�2鐧界洅',
- `process_id` bigint NULL COMMENT '宸ュ簭ID(technology_operation.id)',
- `product_model_id` bigint NULL COMMENT '鍨嬪彿ID(product_model.id)锛岀櫧鐩掑繀濉�',
+ `dept_type` int NULL COMMENT '绫诲瀷锛�1鎴愬搧锛�2鐧界洅',
+ `process_id` bigint NULL COMMENT '宸ュ簭ID',
+ `product_model_id` bigint NULL COMMENT '鍨嬪彿ID锛岀櫧鐩掑繀濉�',
`standard_quantity` decimal(18,4) NULL COMMENT '鏍囧噯鏁伴噺',
`unit` varchar(50) NULL COMMENT '鍗曚綅',
`remark` varchar(255) NULL COMMENT '澶囨敞',
@@ -48,14 +65,14 @@
`create_time` datetime NULL COMMENT '鍒涘缓鏃堕棿',
`update_user` bigint NULL COMMENT '淇敼浜�',
`update_time` datetime NULL COMMENT '淇敼鏃堕棿',
- PRIMARY KEY (`id`)
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_std` (`dept_type`, `process_id`, `product_model_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '鐢熶骇鏍哥畻-鏍囧噯鏁伴噺閰嶇疆';
-DROP TABLE IF EXISTS `production_costing_factor`;
-CREATE TABLE `production_costing_factor` (
+CREATE TABLE IF NOT EXISTS `production_costing_factor` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
- `process_id` bigint NULL COMMENT '宸ュ簭ID(technology_operation.id)',
- `staff_id` bigint NULL COMMENT '鍛樺伐ID(sys_user.user_id)',
+ `process_id` bigint NULL COMMENT '宸ュ簭ID',
+ `staff_id` bigint NULL COMMENT '鍛樺伐ID',
`staff_name` varchar(255) NULL COMMENT '鍛樺伐濮撳悕',
`violin_factor` decimal(18,4) NULL DEFAULT 1 COMMENT '灏忔彁鐞存姌绠楃巼(鍩哄噯)',
`viola_factor` decimal(18,4) NULL COMMENT '澶ф彁鐞存姌绠楃巼',
@@ -65,66 +82,83 @@
`create_time` datetime NULL COMMENT '鍒涘缓鏃堕棿',
`update_user` bigint NULL COMMENT '淇敼浜�',
`update_time` datetime NULL COMMENT '淇敼鏃堕棿',
- PRIMARY KEY (`id`)
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_factor` (`process_id`, `staff_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '鐢熶骇鏍哥畻-鎶樼畻鐜囬厤缃�(宸ュ簭+鍛樺伐)';
--- ------------------------------------------------------------
--- 3. 婕旂ず鏁版嵁锛堜究浜庢湰鍦版煡鐪嬫晥鏋滐級
--- ------------------------------------------------------------
--- 3.1 鏂板閮ㄩ棬锛氭垚鍝侀儴闂� / 鐧界洅閮ㄩ棬
-INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `status`, `del_flag`, `create_by`, `create_time`)
-VALUES (220, 100, '0,100', '鎴愬搧閮ㄩ棬', 1, '0', '0', 'admin', NOW()),
- (221, 100, '0,100', '鐧界洅閮ㄩ棬', 2, '0', '0', 'admin', NOW());
+CREATE TABLE IF NOT EXISTS `production_costing_workday` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+ `work_month` varchar(7) NULL COMMENT '骞存湀 yyyy-MM',
+ `work_days` int NULL COMMENT '褰撴湀宸ヤ綔鏃ュぉ鏁�',
+ `remark` varchar(255) NULL COMMENT '澶囨敞',
+ `create_user` bigint NULL COMMENT '鍒涘缓浜�',
+ `create_time` datetime NULL COMMENT '鍒涘缓鏃堕棿',
+ `update_user` bigint NULL COMMENT '淇敼浜�',
+ `update_time` datetime NULL COMMENT '淇敼鏃堕棿',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_work_month` (`work_month`)
+) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '鐢熶骇鏍哥畻-鏈堝害宸ヤ綔鏃ラ厤缃�';
--- 3.2 鎶婃紨绀哄伐搴忓綊鍏ュ搴旈儴闂紙鎴愬搧锛氬喎宸ヨ壓27/纭寲28锛涚櫧鐩掞細鏀剁嚎25/鍒囧壊2锛�
-UPDATE `technology_operation` SET `dept_id` = 220 WHERE `id` IN (27, 28);
-UPDATE `technology_operation` SET `dept_id` = 221 WHERE `id` IN (2, 25);
+/* ============================================================
+ * 绗� 2 閮ㄥ垎锛氭紨绀烘暟鎹紙鍙�夛紝浠呮湰鍦�/婕旂ず鐜锛�
+ * ============================================================ */
--- 3.3 閮ㄩ棬绫诲瀷閰嶇疆
-INSERT INTO `production_costing_dept` (`dept_id`, `dept_type`, `remark`, `create_time`)
-VALUES (220, 1, '鎴愬搧閮ㄩ棬', NOW()),
- (221, 2, '鐧界洅閮ㄩ棬', NOW());
+-- 2.1 宸ュ簭绫诲瀷閰嶇疆锛堟垚鍝侊細鍐峰伐鑹�27/纭寲28锛涚櫧鐩掞細鍒囧壊2/鏀剁嚎25锛�
+INSERT INTO `production_costing_process` (`process_id`, `dept_type`, `remark`, `create_time`)
+SELECT 27, 1, '鍐峰伐鑹�-鎴愬搧', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_process` WHERE `process_id`=27);
+INSERT INTO `production_costing_process` (`process_id`, `dept_type`, `remark`, `create_time`)
+SELECT 28, 1, '纭寲-鎴愬搧', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_process` WHERE `process_id`=28);
+INSERT INTO `production_costing_process` (`process_id`, `dept_type`, `remark`, `create_time`)
+SELECT 2, 2, '鍒囧壊-鐧界洅', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_process` WHERE `process_id`=2);
+INSERT INTO `production_costing_process` (`process_id`, `dept_type`, `remark`, `create_time`)
+SELECT 25, 2, '鏀剁嚎-鐧界洅', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_process` WHERE `process_id`=25);
--- 3.4 鏍囧噯鏁伴噺閰嶇疆
--- 鎴愬搧锛氭寜宸ュ簭
--- 鐧界洅锛氭寜宸ュ簭 + 鍨嬪彿
+-- 2.2 鏍囧噯鏁伴噺閰嶇疆锛堟垚鍝侊細鎸夊伐搴忥紱鐧界洅锛氭寜宸ュ簭+鍨嬪彿锛�
INSERT INTO `production_costing_standard` (`dept_type`, `process_id`, `product_model_id`, `standard_quantity`, `unit`, `remark`, `create_time`)
-VALUES (1, 27, NULL, 10, 'm', '鍐峰伐鑹烘爣鍑嗘暟閲�', NOW()),
- (1, 28, NULL, 20, 'm', '纭寲鏍囧噯鏁伴噺', NOW()),
- (2, 25, 251, 5, 'kg/km', '鏀剁嚎-閾濆悎閲戠嚎', NOW()),
- (2, 25, 256, 2, 'm', '鏀剁嚎-閾濆悎閲戠粸绾�', NOW()),
- (2, 2, 246, 4, 'kg/km', '鍒囧壊-閾濆悎閲戠嚎', NOW());
+SELECT 1, 27, NULL, 10, 'm', '鍐峰伐鑹烘爣鍑嗘暟閲�', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_standard` WHERE `dept_type`=1 AND `process_id`=27 AND `product_model_id` IS NULL);
+INSERT INTO `production_costing_standard` (`dept_type`, `process_id`, `product_model_id`, `standard_quantity`, `unit`, `remark`, `create_time`)
+SELECT 1, 28, NULL, 20, 'm', '纭寲鏍囧噯鏁伴噺', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_standard` WHERE `dept_type`=1 AND `process_id`=28 AND `product_model_id` IS NULL);
+INSERT INTO `production_costing_standard` (`dept_type`, `process_id`, `product_model_id`, `standard_quantity`, `unit`, `remark`, `create_time`)
+SELECT 2, 25, 251, 5, 'kg/km', '鏀剁嚎-閾濆悎閲戠嚎', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_standard` WHERE `dept_type`=2 AND `process_id`=25 AND `product_model_id`=251);
+INSERT INTO `production_costing_standard` (`dept_type`, `process_id`, `product_model_id`, `standard_quantity`, `unit`, `remark`, `create_time`)
+SELECT 2, 25, 256, 2, 'm', '鏀剁嚎-閾濆悎閲戠粸绾�', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_standard` WHERE `dept_type`=2 AND `process_id`=25 AND `product_model_id`=256);
+INSERT INTO `production_costing_standard` (`dept_type`, `process_id`, `product_model_id`, `standard_quantity`, `unit`, `remark`, `create_time`)
+SELECT 2, 2, 246, 4, 'kg/km', '鍒囧壊-閾濆悎閲戠嚎', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_standard` WHERE `dept_type`=2 AND `process_id`=2 AND `product_model_id`=246);
--- 3.5 鎶樼畻鐜囬厤缃紙宸ュ簭 + 鍛樺伐锛�
+-- 2.3 鎶樼畻鐜囬厤缃紙宸ュ簭+鍛樺伐锛�
INSERT INTO `production_costing_factor` (`process_id`, `staff_id`, `staff_name`, `violin_factor`, `viola_factor`, `bass_factor`, `remark`, `create_time`)
-VALUES (27, 1, '绠$悊鍛樿处鍙�', 1, 3, 6, '鍐峰伐鑹�-鎶樼畻鐜�', NOW()),
- (28, 1, '绠$悊鍛樿处鍙�', 1, 2, 4, '纭寲-鎶樼畻鐜�', NOW());
+SELECT 27, 1, '绠$悊鍛樿处鍙�', 1, 3, 6, '鍐峰伐鑹�-鎶樼畻鐜�', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_factor` WHERE `process_id`=27 AND `staff_id`=1);
+INSERT INTO `production_costing_factor` (`process_id`, `staff_id`, `staff_name`, `violin_factor`, `viola_factor`, `bass_factor`, `remark`, `create_time`)
+SELECT 28, 1, '绠$悊鍛樿处鍙�', 1, 2, 4, '纭寲-鎶樼畻鐜�', NOW() WHERE NOT EXISTS (SELECT 1 FROM `production_costing_factor` WHERE `process_id`=28 AND `staff_id`=1);
--- 3.6 涔愬櫒婕旂ず鏁版嵁锛堝皬鎻愮惔/澶ф彁鐞�/璐濇柉锛夛紝鐢ㄤ簬灞曠ず鎴愬搧閮ㄩ棬鎶樼畻鏁堟灉
+-- 2.4 涔愬櫒婕旂ず鏁版嵁锛堝皬鎻愮惔/澶ф彁鐞�/璐濇柉锛�+ 鎶ュ伐閾�
INSERT INTO `product` (`id`, `parent_id`, `product_name`, `create_user`, `dept_id`)
-VALUES (510, 276, '灏忔彁鐞�', 1, 220),
- (511, 276, '澶ф彁鐞�', 1, 220),
- (512, 276, '璐濇柉', 1, 220);
+SELECT 510, 276, '灏忔彁鐞�', 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `product` WHERE `id` = 510);
+INSERT INTO `product` (`id`, `parent_id`, `product_name`, `create_user`, `dept_id`)
+SELECT 511, 276, '澶ф彁鐞�', 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `product` WHERE `id` = 511);
+INSERT INTO `product` (`id`, `parent_id`, `product_name`, `create_user`, `dept_id`)
+SELECT 512, 276, '璐濇柉', 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `product` WHERE `id` = 512);
INSERT INTO `product_model` (`id`, `product_id`, `model`, `unit`, `create_user`, `dept_id`)
-VALUES (5001, 510, 'VIOLIN-STD', '鎶�', 1, 220),
- (5002, 511, 'CELLO-STD', '鎶�', 1, 220),
- (5003, 512, 'BASS-STD', '鎶�', 1, 220);
+SELECT 5001, 510, 'VIOLIN-STD', '鎶�', 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `product_model` WHERE `id` = 5001);
+INSERT INTO `product_model` (`id`, `product_id`, `model`, `unit`, `create_user`, `dept_id`)
+SELECT 5002, 511, 'CELLO-STD', '鎶�', 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `product_model` WHERE `id` = 5002);
+INSERT INTO `product_model` (`id`, `product_id`, `model`, `unit`, `create_user`, `dept_id`)
+SELECT 5003, 512, 'BASS-STD', '鎶�', 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `product_model` WHERE `id` = 5003);
--- 鎶ュ伐閾撅細璁㈠崟 -> 宸ヨ壓璺嚎宸ュ簭 -> 宸ュ崟 -> 鎶ュ伐 -> 浜у嚭
INSERT INTO `production_order` (`id`, `product_model_id`, `technology_routing_id`, `nps_no`, `quantity`, `create_user`, `dept_id`)
-VALUES (5000, 5001, 0, 'DEMO-ORDER-1', 100, 1, 220);
-
+SELECT 5000, 5001, 0, 'DEMO-ORDER-1', 100, 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `production_order` WHERE `id` = 5000);
INSERT INTO `production_order_routing_operation` (`id`, `production_order_id`, `technology_routing_operation_id`, `technology_operation_id`, `operation_name`, `product_model_id`, `type`, `create_user`, `dept_id`)
-VALUES (5000, 5000, 0, 27, '鍐峰伐鑹�', 5001, 1, 1, 220);
-
+SELECT 5000, 5000, 0, 27, '鍐峰伐鑹�', 5001, 1, 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `production_order_routing_operation` WHERE `id` = 5000);
INSERT INTO `production_operation_task` (`id`, `production_order_routing_operation_id`, `technology_routing_operation_id`, `work_order_no`, `status`, `production_order_id`, `create_user`, `dept_id`)
-VALUES (5000, 5000, 0, 'DEMO-WO-1', 4, 5000, 1, 220);
-
+SELECT 5000, 5000, 0, 'DEMO-WO-1', 4, 5000, 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `production_operation_task` WHERE `id` = 5000);
INSERT INTO `production_product_main` (`id`, `product_no`, `user_id`, `user_name`, `production_operation_task_id`, `status`, `dept_id`, `create_time`, `create_user`, `report_type`, `audit_status`)
-VALUES (5000, 'BG-DEMO-001', 1, '绠$悊鍛樿处鍙�', 5000, 4, 220, '2026-09-15 10:00:00', 1, 0, 1);
-
+SELECT 5000, 'BG-DEMO-001', 1, '绠$悊鍛樿处鍙�', 5000, 4, 100, '2026-09-15 10:00:00', 1, 0, 1 WHERE NOT EXISTS (SELECT 1 FROM `production_product_main` WHERE `id` = 5000);
INSERT INTO `production_product_output` (`production_product_main_id`, `product_model_id`, `quantity`, `scrap_qty`, `create_user`, `dept_id`)
-VALUES (5000, 5001, 20, 0, 1, 220),
- (5000, 5002, 10, 0, 1, 220),
- (5000, 5003, 5, 0, 1, 220);
+SELECT 5000, 5001, 20, 0, 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `production_product_output` WHERE `production_product_main_id` = 5000 AND `product_model_id` = 5001);
+INSERT INTO `production_product_output` (`production_product_main_id`, `product_model_id`, `quantity`, `scrap_qty`, `create_user`, `dept_id`)
+SELECT 5000, 5002, 10, 0, 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `production_product_output` WHERE `production_product_main_id` = 5000 AND `product_model_id` = 5002);
+INSERT INTO `production_product_output` (`production_product_main_id`, `product_model_id`, `quantity`, `scrap_qty`, `create_user`, `dept_id`)
+SELECT 5000, 5003, 5, 0, 1, 100 WHERE NOT EXISTS (SELECT 1 FROM `production_product_output` WHERE `production_product_main_id` = 5000 AND `product_model_id` = 5003);
+
+SELECT '鐢熶骇鏍哥畻鏁版嵁搴撹剼鏈墽琛屽畬鎴�' AS result_message;
--
Gitblit v1.9.3