Просмотр исходного кода

fix(s0): default warehouse organization scope

Hide company and factory selectors on S0 warehouse pages.
Default warehouse upserts to the single-deployment company/factory scope.
Backfill legacy 0/1 organization refs without changing tenant_id.
YY968XX 10 часов назад
Родитель
Сommit
a18c8a6c51

+ 1 - 1
Web/package.json

@@ -1,7 +1,7 @@
 {
 	"name": "admin.net",
 	"type": "module",
-	"version": "2.4.189",
+	"version": "2.4.190",
 	"packageManager": "pnpm@10.32.1",
 	"lastBuildTime": "2026.03.15",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",

+ 14 - 15
Web/src/views/aidop/s0/warehouse/BarcodeRuleList.vue

@@ -41,14 +41,14 @@
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
 				<el-row :gutter="16">
 					<el-col :span="12">
-						<el-form-item label="公司" prop="companyRefId">
+						<el-form-item v-if="false" label="公司" prop="companyRefId">
 							<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 								<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="工厂" prop="factoryRefId">
+						<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 							<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 								<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
@@ -100,10 +100,20 @@ const saving = ref(false);
 const formRef = ref<FormInstance>();
 
 function emptyForm() {
-	return { companyRefId: undefined, factoryRefId: undefined, domainCode: '', customer: '', type: '', waterRules: '', waterLen: null as number | null, separator: '', firmLength: null as number | null, firmString1: '', firmStringLen1: null, firmString1Note: '', firmString2: '', firmStringLen2: null, firmString2Note: '', firmString3: '', firmStringLen3: null, firmString3Note: '', firmString4: '', firmStringLen4: null, firmString4Note: '', firmString5: '', firmStringLen5: null, firmString5Note: '', firmString6: '', firmStringLen6: null, firmString6Note: '', firmString7: '', firmStringLen7: null, firmString7Note: '', firmString8: '', firmStringLen8: null, firmString8Note: '', firmString9: '', firmStringLen9: null, firmString9Note: '', firmString10: '', firmStringLen10: null, firmString10Note: '', firmString11: '', firmStringLen11: null, firmString11Note: '', firmString12: '', firmStringLen12: null, firmString12Note: '' };
+	return { companyRefId: undefined as string | undefined, factoryRefId: undefined as string | undefined, domainCode: '', customer: '', type: '', waterRules: '', waterLen: null as number | null, separator: '', firmLength: null as number | null, firmString1: '', firmStringLen1: null, firmString1Note: '', firmString2: '', firmStringLen2: null, firmString2Note: '', firmString3: '', firmStringLen3: null, firmString3Note: '', firmString4: '', firmStringLen4: null, firmString4Note: '', firmString5: '', firmStringLen5: null, firmString5Note: '', firmString6: '', firmStringLen6: null, firmString6Note: '', firmString7: '', firmStringLen7: null, firmString7Note: '', firmString8: '', firmStringLen8: null, firmString8Note: '', firmString9: '', firmStringLen9: null, firmString9Note: '', firmString10: '', firmStringLen10: null, firmString10Note: '', firmString11: '', firmStringLen11: null, firmString11Note: '', firmString12: '', firmStringLen12: null, firmString12Note: '' };
 }
 const form = reactive(emptyForm());
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -111,15 +121,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	customer: [{ required: true, message: '请填写客户/供应商编码', trigger: 'blur' }],
 	type: [{ required: true, message: '请填写条码类型', trigger: 'blur' }],
 };
@@ -150,10 +152,7 @@ function openEdit(row: S0BarcodeRuleRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0BarcodeRulesApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/CostCenterList.vue

@@ -36,12 +36,12 @@
 
 		<el-dialog v-model="dialogVisible" :title="dialogTitle" width="600px" destroy-on-close @closed="resetForm">
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
-				<el-form-item label="公司" prop="companyRefId">
+				<el-form-item v-if="false" label="公司" prop="companyRefId">
 					<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 						<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="工厂" prop="factoryRefId">
+				<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 					<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 						<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
@@ -81,6 +81,16 @@ const saving = ref(false);
 const formRef = ref<FormInstance>();
 const form = reactive<S0CostCtrUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', costCtr: '', descr: '', ufld1: '', effTime: null });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -88,15 +98,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	costCtr: [{ required: true, message: '请填写成本中心编码', trigger: 'blur' }],
 };
 
@@ -126,10 +128,7 @@ function openEdit(row: S0CostCtrRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0CostCentersApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/DepartmentList.vue

@@ -46,12 +46,12 @@
 
 		<el-dialog v-model="dialogVisible" :title="dialogTitle" width="600px" destroy-on-close @closed="resetForm">
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
-				<el-form-item label="公司" prop="companyRefId">
+				<el-form-item v-if="false" label="公司" prop="companyRefId">
 					<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 						<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="工厂" prop="factoryRefId">
+				<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 					<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 						<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
@@ -101,6 +101,16 @@ const formRef = ref<FormInstance>();
 
 const form = reactive<S0DepartmentUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', department: '', descr: '', isActive: true });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -108,15 +118,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	department: [{ required: true, message: '请填写部门编码', trigger: 'blur' }],
 };
 
@@ -161,10 +163,7 @@ function openEdit(row: S0DepartmentRow) {
 
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0DepartmentsApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/EmpWorkDutyList.vue

@@ -57,14 +57,14 @@
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
 				<el-row :gutter="16">
 					<el-col :span="12">
-						<el-form-item label="公司" prop="companyRefId">
+						<el-form-item v-if="false" label="公司" prop="companyRefId">
 							<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 								<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="工厂" prop="factoryRefId">
+						<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 							<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 								<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
@@ -124,6 +124,16 @@ const scopeMode = ref<'single' | 'range'>('range');
 const emptyF = (): S0EmpWorkDutyUpsert => ({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', employee: '', itemNum: '', itemNum1: '', itemNum2: '', location: '', prodLine: '', duty: '', empType: '', ufld2: '' });
 const form = reactive<S0EmpWorkDutyUpsert>(emptyF());
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -131,15 +141,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	employee: [{ required: true, message: '请填写员工编码', trigger: 'blur' }],
 };
 
@@ -170,10 +172,7 @@ function openEdit(row: S0EmpWorkDutyRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		const payload: S0EmpWorkDutyUpsert = { ...form };

+ 13 - 14
Web/src/views/aidop/s0/warehouse/EmployeeList.vue

@@ -56,14 +56,14 @@
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
 				<el-row :gutter="16">
 					<el-col :span="12">
-						<el-form-item label="公司" prop="companyRefId">
+						<el-form-item v-if="false" label="公司" prop="companyRefId">
 							<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 								<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="工厂" prop="factoryRefId">
+						<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 							<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 								<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
@@ -132,6 +132,16 @@ const formRef = ref<FormInstance>();
 
 const form = reactive<S0EmployeeUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', employee: '', name: '', sex: '', phone: '', email: '', department: '', jobTitle: '', employmentStatus: '', isActive: true });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -139,15 +149,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	employee: [{ required: true, message: '请填写员工编码', trigger: 'blur' }],
 };
 
@@ -182,10 +184,7 @@ function openEdit(row: S0EmployeeRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0EmployeesApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/ItemPackList.vue

@@ -53,14 +53,14 @@
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
 				<el-row :gutter="16">
 					<el-col :span="12">
-						<el-form-item label="公司" prop="companyRefId">
+						<el-form-item v-if="false" label="公司" prop="companyRefId">
 							<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 								<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="工厂" prop="factoryRefId">
+						<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 							<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 								<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
@@ -112,6 +112,16 @@ const formRef = ref<FormInstance>();
 const emptyF = (): S0ItemPackUpsert => ({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', itemNum: '', packingQty: null, smallPackingQty: null, packingType: '', netWeight: null, weightUM: '', length: null, width: null, high: null, issSpecific: '', custItem: '', remark: '', isActive: true });
 const form = reactive<S0ItemPackUpsert>(emptyF());
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -119,15 +129,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	itemNum: [{ required: true, message: '请填写物料编码', trigger: 'blur' }],
 };
 
@@ -157,10 +159,7 @@ function openEdit(row: S0ItemPackRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0ItemPacksApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/LabelTypeList.vue

@@ -38,12 +38,12 @@
 
 		<el-dialog v-model="dialogVisible" :title="dialogTitle" width="640px" destroy-on-close @closed="resetForm">
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
-				<el-form-item label="公司" prop="companyRefId">
+				<el-form-item v-if="false" label="公司" prop="companyRefId">
 					<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 						<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="工厂" prop="factoryRefId">
+				<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 					<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 						<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
@@ -82,6 +82,16 @@ const saving = ref(false);
 const formRef = ref<FormInstance>();
 const form = reactive<S0LabelTypeUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', barType: '', class: '', inputString: '' });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -89,15 +99,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	barType: [{ required: true, message: '请填写标签类型编码', trigger: 'blur' }],
 };
 
@@ -127,10 +129,7 @@ function openEdit(row: S0LabelTypeRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0LabelTypesApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/LocationList.vue

@@ -50,12 +50,12 @@
 
 		<el-dialog v-model="dialogVisible" :title="dialogTitle" width="640px" destroy-on-close @closed="resetForm">
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
-				<el-form-item label="公司" prop="companyRefId">
+				<el-form-item v-if="false" label="公司" prop="companyRefId">
 					<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 						<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="工厂" prop="factoryRefId">
+				<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 					<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 						<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
@@ -97,6 +97,16 @@ const saving = ref(false);
 const formRef = ref<FormInstance>();
 const form = reactive<S0LocationUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', location: '', descr: '', storer: '', typed: '', physicalAddress: '', isActive: true });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -104,15 +114,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	location: [{ required: true, message: '请填写库位编码', trigger: 'blur' }],
 };
 
@@ -142,10 +144,7 @@ function openEdit(row: S0LocationRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0LocationsApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/LocationShelfList.vue

@@ -40,12 +40,12 @@
 
 		<el-dialog v-model="dialogVisible" :title="dialogTitle" width="600px" destroy-on-close @closed="resetForm">
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
-				<el-form-item label="公司" prop="companyRefId">
+				<el-form-item v-if="false" label="公司" prop="companyRefId">
 					<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 						<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="工厂" prop="factoryRefId">
+				<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 					<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 						<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
@@ -85,6 +85,16 @@ const saving = ref(false);
 const formRef = ref<FormInstance>();
 const form = reactive<S0LocationShelfUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', location: '', invShelf: '', descr: '', area: '' });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -92,15 +102,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	location: [{ required: true, message: '请填写所属库位', trigger: 'blur' }],
 	invShelf: [{ required: true, message: '请填写货架编码', trigger: 'blur' }],
 };
@@ -130,10 +132,7 @@ function openEdit(row: S0LocationShelfRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0LocationShelvesApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/NbrControlList.vue

@@ -50,14 +50,14 @@
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
 				<el-row :gutter="16">
 					<el-col :span="12">
-						<el-form-item label="公司" prop="companyRefId">
+						<el-form-item v-if="false" label="公司" prop="companyRefId">
 							<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 								<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="工厂" prop="factoryRefId">
+						<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 							<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 								<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
@@ -109,6 +109,16 @@ const formRef = ref<FormInstance>();
 const emptyForm = (): S0NbrControlUpsert => ({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', nbrType: '', description: '', nbrPre1: '', nbrPre2: '', nbrPre3: '', iniValue: null, minValue: null, maxValue: null, allowReset: false, allowSkip: false, allowManual: false, dateType: '', isDateType: false });
 const form = reactive<S0NbrControlUpsert>(emptyForm());
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -116,15 +126,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	nbrType: [{ required: true, message: '请填写单号类型编码', trigger: 'blur' }],
 };
 
@@ -154,10 +156,7 @@ function openEdit(row: S0NbrControlRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0NbrControlsApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/NbrTypeList.vue

@@ -50,12 +50,12 @@
 
 		<el-dialog v-model="dialogVisible" :title="dialogTitle" width="600px" destroy-on-close @closed="resetForm">
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
-				<el-form-item label="公司" prop="companyRefId">
+				<el-form-item v-if="false" label="公司" prop="companyRefId">
 					<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 						<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="工厂" prop="factoryRefId">
+				<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 					<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 						<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 					</el-select>
@@ -96,6 +96,16 @@ const saving = ref(false);
 const formRef = ref<FormInstance>();
 const form = reactive<S0NbrTypeUpsert>({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', nbrType: '', descr1: '', nbrClass: '', dept: '', isActive: true });
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -103,15 +113,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	nbrType: [{ required: true, message: '请填写单号类型编码', trigger: 'blur' }],
 };
 
@@ -141,10 +143,7 @@ function openEdit(row: S0NbrTypeRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0NbrTypesApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 13 - 14
Web/src/views/aidop/s0/warehouse/TaskAssignmentList.vue

@@ -51,14 +51,14 @@
 			<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
 				<el-row :gutter="16">
 					<el-col :span="12">
-						<el-form-item label="公司" prop="companyRefId">
+						<el-form-item v-if="false" label="公司" prop="companyRefId">
 							<el-select v-model="form.companyRefId" clearable filterable placeholder="请选择公司" style="width: 100%">
 								<el-option v-for="item in companyOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="工厂" prop="factoryRefId">
+						<el-form-item v-if="false" label="工厂" prop="factoryRefId">
 							<el-select v-model="form.factoryRefId" clearable filterable placeholder="请选择工厂" style="width: 100%" :disabled="!form.companyRefId">
 								<el-option v-for="item in formFactoryOptions" :key="item.id" :label="item.name || item.code || `${item.id}`" :value="item.id" />
 							</el-select>
@@ -109,6 +109,16 @@ const formRef = ref<FormInstance>();
 const emptyF = (): S0TaskAssignmentUpsert => ({ companyRefId: undefined, factoryRefId: undefined, domainCode: '', tcrq: null, sqr: '', rwlx: '', wlbm: '', sl: null, rqpc: '', yskw: '', mdkw: '', xqsj: null, clr: '', bz: '', zt: '' });
 const form = reactive<S0TaskAssignmentUpsert>(emptyF());
 
+// 单甲方私有云口径:公司/工厂不在前端启用,统一注入全局默认组织(不依赖登录账号 tenant_id)
+const DEFAULT_COMPANY_REF_ID = '1329900200001';
+const DEFAULT_FACTORY_REF_ID = '1329900200002';
+function isMissingOrLegacyOrgRef(v: unknown): boolean {
+	return v == null || v === '' || v === 0 || v === '0' || v === 1 || v === '1';
+}
+function applyDefaultOrg() {
+	if (isMissingOrLegacyOrgRef(form.companyRefId)) form.companyRefId = DEFAULT_COMPANY_REF_ID;
+	if (isMissingOrLegacyOrgRef(form.factoryRefId)) form.factoryRefId = DEFAULT_FACTORY_REF_ID;
+}
 const companyOptions = ref<OrgOption[]>([]);
 const factoryOptions = ref<OrgOption[]>([]);
 const formFactoryOptions = computed(() => {
@@ -116,15 +126,7 @@ const formFactoryOptions = computed(() => {
 	return factoryOptions.value.filter((item) => item.pid === form.companyRefId);
 });
 
-const validateOrgRequired = (msg: string) => (_r: unknown, v: unknown, cb: (e?: Error) => void) => {
-	const s = v == null ? '' : String(v);
-	if (s === '' || s === '0') cb(new Error(msg));
-	else cb();
-};
-
 const rules: FormRules = {
-	companyRefId: [{ validator: validateOrgRequired('请选择公司'), trigger: 'change' }],
-	factoryRefId: [{ validator: validateOrgRequired('请选择工厂'), trigger: 'change' }],
 	rwlx: [{ required: true, message: '请填写任务类型', trigger: 'blur' }],
 	wlbm: [{ required: true, message: '请填写物料编码', trigger: 'blur' }],
 };
@@ -155,10 +157,7 @@ function openEdit(row: S0TaskAssignmentRow) {
 }
 async function submitForm() {
 	await formRef.value?.validate();
-	if (!form.companyRefId || form.companyRefId === '0' || !form.factoryRefId || form.factoryRefId === '0') {
-		ElMessage.warning('请选择公司和工厂');
-		return;
-	}
+	applyDefaultOrg();
 	saving.value = true;
 	try {
 		if (editingId.value) { await s0TaskAssignmentsApi.update(editingId.value, { ...form }); ElMessage.success('已保存'); }

+ 6 - 3
server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj

@@ -11,9 +11,9 @@
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <Copyright>Admin.NET</Copyright>
     <Description>Admin.NET 通用权限开发平台</Description>
-    <AssemblyVersion>1.0.175</AssemblyVersion>
-    <FileVersion>1.0.175</FileVersion>
-    <Version>1.0.175</Version>
+    <AssemblyVersion>1.0.176</AssemblyVersion>
+    <FileVersion>1.0.176</FileVersion>
+    <Version>1.0.176</Version>
   </PropertyGroup>
 
   <ItemGroup>
@@ -124,6 +124,9 @@
     <None Update="UpdateScripts\1.0.174.sql">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
+    <None Update="UpdateScripts\1.0.176.sql">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
   </ItemGroup>
 
   <ItemGroup>

+ 75 - 0
server/Admin.NET.Web.Entry/UpdateScripts/1.0.176.sql

@@ -0,0 +1,75 @@
+-- ============================================================
+-- 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);