liu
6 小时以前 6c0fd2cb801554f7999d14e45a94ef0f0d0dfb8d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 托盘保存品种;仅从有效袋码中唯一且与已有批次兼容的品种回填。
SET @pallet_item_exists = (SELECT COUNT(*) FROM information_schema.columns
 WHERE table_schema=DATABASE() AND table_name='mes_pro_pallet' AND column_name='item_id');
SET @pallet_item_ddl = IF(@pallet_item_exists=0,
 'ALTER TABLE mes_pro_pallet ADD COLUMN item_id BIGINT DEFAULT NULL COMMENT ''托盘品种编号'' AFTER temp_code', 'SELECT 1');
PREPARE pallet_item_stmt FROM @pallet_item_ddl;
EXECUTE pallet_item_stmt;
DEALLOCATE PREPARE pallet_item_stmt;
 
UPDATE mes_pro_pallet p
JOIN (SELECT pallet_id, MIN(item_id) item_id FROM mes_pro_bag_code
 WHERE deleted=0 AND status<>30 AND pallet_id IS NOT NULL GROUP BY pallet_id
 HAVING COUNT(DISTINCT item_id)=1 AND COUNT(*)=COUNT(item_id)) b ON b.pallet_id=p.id
LEFT JOIN mes_pro_batch ba ON ba.id=p.batch_id AND ba.deleted=0
SET p.item_id=b.item_id
WHERE p.deleted=0 AND p.item_id IS NULL AND (ba.item_id IS NULL OR ba.item_id=b.item_id);
 
UPDATE mes_pro_batch ba
JOIN (SELECT batch_id,MIN(item_id) item_id FROM mes_pro_bag_code
 WHERE deleted=0 AND status<>30 AND batch_id IS NOT NULL GROUP BY batch_id
 HAVING COUNT(DISTINCT item_id)=1 AND COUNT(*)=COUNT(item_id)) b ON b.batch_id=ba.id
SET ba.item_id=b.item_id
WHERE ba.deleted=0 AND ba.item_id IS NULL
 AND NOT EXISTS (SELECT 1 FROM mes_trace_integrity_record r WHERE r.biz_type='BATCH' AND r.biz_id=ba.id AND r.deleted=0)
 AND NOT EXISTS (SELECT 1 FROM mes_pro_pallet p WHERE p.batch_id=ba.id AND p.deleted=0 AND p.item_id IS NOT NULL AND p.item_id<>b.item_id);