-- ============================================================
-- 1.0.176.sql
-- S0-WAREHOUSE-SCOPE-ZERO-DATA-GOVERNANCE-1
--
-- 业务目标：在「单甲方私有云、单套业务数据」口径下，把 S0 仓储 12 张主数据表
--   的 company_ref_id / factory_ref_id 中的 NULL / 0 / 历史值 1 统一回填为全局默认组织：
--     默认公司 company_ref_id = 1329900200001（S0示范公司）
--     默认工厂 factory_ref_id = 1329900200002（一工厂）
--
-- 口径与边界（用户拍板）：
--   - 本批次不启用多租户隔离判断；不使用 tenant_id 作为回填守卫；不修改 tenant_id。
--   - 仅回填 NULL / 0 / 1 这三类「缺失或历史残留」值；不覆盖已有有效非 0/非 1 值。
--   - 不创建 / 不修改 SysOrg；不创建 AIDOP 默认工厂（已另拍板放弃）。
--   - 不 INSERT / DELETE / ALTER / TRUNCATE，仅 UPDATE 上述两列。
--
-- 幂等性：WHERE 仅命中 NULL/0/1；执行一次后这些行变为有效默认值（非 0/非 1），
--   再次执行命中 0 行。安全可重复执行。
--
-- 回滚 SQL（不可无损自动回滚）：
--   本脚本执行前未逐行备份原 company_ref_id / factory_ref_id 原值（原值多为 0/1/NULL，
--   回填后无法区分「原本就是默认公司」与「由 0/1/NULL 回填而来」。
--   如需回滚，必须依赖外部数据库备份或审计日志，不能由本脚本自动逆向。
--   粗回滚示意（会误伤本就等于默认值的真实行，故默认不执行；务必优先用备份恢复）：
--     -- UPDATE DepartmentMaster SET company_ref_id = 0 WHERE company_ref_id = 1329900200001;
--     -- UPDATE DepartmentMaster SET factory_ref_id = 0 WHERE factory_ref_id = 1329900200002;
--     -- （其余 11 表同理；强烈不建议，请优先用备份恢复）
-- ============================================================

-- 1) DepartmentMaster
UPDATE `DepartmentMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `DepartmentMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 2) EmployeeMaster
UPDATE `EmployeeMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `EmployeeMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 3) CostCtrMaster
UPDATE `CostCtrMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `CostCtrMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 4) LocationMaster
UPDATE `LocationMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `LocationMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 5) LocationShelfMaster
UPDATE `LocationShelfMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `LocationShelfMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 6) BarCodeNbr
UPDATE `BarCodeNbr` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `BarCodeNbr` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 7) BarCodeType
UPDATE `BarCodeType` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `BarCodeType` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 8) NbrTypeMaster
UPDATE `NbrTypeMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `NbrTypeMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 9) NbrControl
UPDATE `NbrControl` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `NbrControl` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 10) ItemPackMaster
UPDATE `ItemPackMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `ItemPackMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 11) EmpWorkDutyMaster
UPDATE `EmpWorkDutyMaster` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `EmpWorkDutyMaster` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);

-- 12) wms_rwzp（当前空表，影响 0 行，保留语句以保持 12 表清单完整）
UPDATE `wms_rwzp` SET `company_ref_id` = 1329900200001 WHERE `company_ref_id` IS NULL OR `company_ref_id` IN (0, 1);
UPDATE `wms_rwzp` SET `factory_ref_id` = 1329900200002 WHERE `factory_ref_id` IS NULL OR `factory_ref_id` IN (0, 1);
