|
|
@@ -198,6 +198,11 @@ public sealed class AdoS0ReferenceChecker
|
|
|
.CountAsync();
|
|
|
if (sub > 0) return (sub, "物料替代关系 (ItemSubstituteDetail)");
|
|
|
|
|
|
+ var lineMat = await _db.Queryable<AdoS0ProdLineDetail>()
|
|
|
+ .Where(x => x.Part == itemNum)
|
|
|
+ .CountAsync();
|
|
|
+ if (lineMat > 0) return (lineMat, "线边物料 (ProdLineDetail.Part)");
|
|
|
+
|
|
|
// 不查 SRM:srm_purchase.icitem_id 是上游系统(金蝶等)的物料 ID,
|
|
|
// 与本地 AdoS0ItemMaster.Id 不在同一坐标系,无法直接 JOIN;
|
|
|
// SRM 表也没有物料编码 (ItemNum) 字符串列。
|
|
|
@@ -222,6 +227,32 @@ public sealed class AdoS0ReferenceChecker
|
|
|
"SrmPurchase.SupplierNumber");
|
|
|
if (srm > 0) return (srm, "货源清单 (SrmPurchase)");
|
|
|
|
|
|
+ var routSupp = await _db.Queryable<AdoS0MfgRoutingOpDetail>()
|
|
|
+ .Where(x => x.SupplierCode == supp)
|
|
|
+ .CountAsync();
|
|
|
+ if (routSupp > 0) return (routSupp, "工艺路线明细供应商 (RoutingOpDetail.SupplierCode)");
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 工作中心(WorkCtrMaster)删除前引用检查。
|
|
|
+ /// 覆盖下游:工艺路线明细 / 线边物料。
|
|
|
+ /// </summary>
|
|
|
+ public async Task<(int Count, string Table)?> WorkCenterReferencesAsync(string? workCtr)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrWhiteSpace(workCtr)) return null;
|
|
|
+
|
|
|
+ var routing = await _db.Queryable<AdoS0MfgRoutingOpDetail>()
|
|
|
+ .Where(x => x.WorkCenterCode == workCtr)
|
|
|
+ .CountAsync();
|
|
|
+ if (routing > 0) return (routing, "工艺路线明细 (RoutingOpDetail.WorkCenterCode)");
|
|
|
+
|
|
|
+ var lineSite = await _db.Queryable<AdoS0ProdLineDetail>()
|
|
|
+ .Where(x => x.Site == workCtr)
|
|
|
+ .CountAsync();
|
|
|
+ if (lineSite > 0) return (lineSite, "线边物料工作中心 (ProdLineDetail.Site)");
|
|
|
+
|
|
|
return null;
|
|
|
}
|
|
|
|