|
|
@@ -317,7 +317,7 @@ public class OrderDeliveryService : IDynamicApiController, ITransient
|
|
|
bce.bom_number AS BomNumber,
|
|
|
bce.model AS Model,
|
|
|
DATE_FORMAT(bce.kitting_time, '%Y-%m-%d') AS KittingTime,
|
|
|
- bce.item_type AS Type,
|
|
|
+ bce.type AS Type,
|
|
|
NULL AS Unit,
|
|
|
bce.erp_cls_name AS ErpClsName,
|
|
|
bce.qty AS Qty,
|
|
|
@@ -333,7 +333,7 @@ public class OrderDeliveryService : IDynamicApiController, ITransient
|
|
|
NULL AS SubcontractingQty,
|
|
|
NULL AS Backflush,
|
|
|
DATE_FORMAT(bce.satisfy_time, '%Y-%m-%d') AS SatisfyTime,
|
|
|
- bce.have_ic_subs AS HaveIcSubs,
|
|
|
+ bce.haveicsubs AS HaveIcSubs,
|
|
|
bce.substitute_code AS SubstituteCode
|
|
|
FROM b_bom_child_examine bce
|
|
|
INNER JOIN b_examine_result ber ON ber.Id = bce.examine_id
|
|
|
@@ -354,50 +354,67 @@ public class OrderDeliveryService : IDynamicApiController, ITransient
|
|
|
return await _db.Ado.SqlQueryAsync<FlowMaterialRow>(sql, new { EntryId = entryId, TenantId = tenantId });
|
|
|
}
|
|
|
|
|
|
- // ── Tab5 采购订单(MySQL:经占用/工单关联到订单分录)──
|
|
|
+ // ── Tab5 采购订单(MySQL:参考工单执行跟踪,双路合并 PW + DO/PO)──
|
|
|
private async Task<List<FlowPoRow>> QueryPo(long entryId)
|
|
|
{
|
|
|
var tenantId = Infrastructure.AidopTenantScope.ResolveOrThrow(_userManager);
|
|
|
const string sql = """
|
|
|
SELECT
|
|
|
- ROW_NUMBER() OVER (ORDER BY t.PoBillNo) AS Sno,
|
|
|
- t.PoBillNo,
|
|
|
- t.SupplierNo,
|
|
|
- t.SupplierName,
|
|
|
- t.PoTotal,
|
|
|
- t.PoPurchaser,
|
|
|
- t.State,
|
|
|
- t.PoSsendDate,
|
|
|
- t.CreateTime
|
|
|
+ ROW_NUMBER() OVER (ORDER BY PoBillno) AS Sno,
|
|
|
+ PoBillno, SupplierNo, SupplierName, PoTotal, PoPurchaser, State, PoSsendDate, CreateTime
|
|
|
FROM (
|
|
|
SELECT DISTINCT
|
|
|
- pm.po_billno AS PoBillNo,
|
|
|
- pm.supplier_no AS SupplierNo,
|
|
|
- pm.supplier_name AS SupplierName,
|
|
|
- CAST(pm.po_total AS DECIMAL(18, 2)) AS PoTotal,
|
|
|
- pm.po_purchaser AS PoPurchaser,
|
|
|
- pm.create_time AS CreateTime,
|
|
|
- pm.po_ssend_date AS PoSsendDate,
|
|
|
- CASE pm.state
|
|
|
- WHEN 0 THEN '新增'
|
|
|
- WHEN 1 THEN '审核中'
|
|
|
- WHEN 2 THEN '同意'
|
|
|
- WHEN 3 THEN '关闭'
|
|
|
- END AS State
|
|
|
- FROM srm_po_main pm
|
|
|
- LEFT JOIN srm_po_list pl ON pm.id = pl.po_id AND pl.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN srm_po_occupy occ ON pl.Id = occ.polist_id AND CAST(pm.factory_id AS CHAR(64)) = CAST(occ.factory_id AS CHAR(64)) AND occ.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN mes_morder mo ON mo.id = occ.morder_id AND mo.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN mes_moentry me ON mo.id = me.moentry_moid AND me.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN crm_seorderentry se ON me.soentry_id = se.id
|
|
|
- WHERE se.id = @EntryId AND se.tenant_id = @TenantId AND pm.IsDeleted = 0
|
|
|
+ pm.PurOrd AS PoBillno,
|
|
|
+ IFNULL(TRIM(pm.Supp), '') AS SupplierNo,
|
|
|
+ IFNULL(TRIM(s.SortName), '') AS SupplierName,
|
|
|
+ CAST(IFNULL(det.PoTotal, 0) AS DECIMAL(18, 2)) AS PoTotal,
|
|
|
+ IFNULL(TRIM(pm.Buyer), '') AS PoPurchaser,
|
|
|
+ CASE
|
|
|
+ WHEN IFNULL(LENGTH(pm.Status), 0) = 0 THEN '新增'
|
|
|
+ WHEN pm.Status = 'R' THEN '新增'
|
|
|
+ WHEN pm.Status = 'S' THEN '已下达'
|
|
|
+ WHEN pm.Status = 'C' THEN '关闭'
|
|
|
+ ELSE pm.Status
|
|
|
+ END AS State,
|
|
|
+ pm.OrdDate AS PoSsendDate,
|
|
|
+ pm.CreateTime AS CreateTime
|
|
|
+ FROM PurOrdMaster pm
|
|
|
+ LEFT JOIN SuppMaster s ON pm.Supp = s.Supp AND s.tenant_id = pm.tenant_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT PurOrdRecID,
|
|
|
+ SUM(IFNULL(QtyOrded, 0) * IFNULL(PurCost, 0)) AS PoTotal
|
|
|
+ FROM PurOrdDetail
|
|
|
+ GROUP BY PurOrdRecID
|
|
|
+ ) det ON det.PurOrdRecID = pm.RecID
|
|
|
+ WHERE pm.tenant_id = @TenantId
|
|
|
+ AND IFNULL(pm.IsActive, 0) <= 1
|
|
|
+ AND (
|
|
|
+ pm.WorkOrd IN (
|
|
|
+ SELECT me.moentry_mono FROM mes_moentry me
|
|
|
+ WHERE me.soentry_id = @EntryId AND me.tenant_id = @TenantId
|
|
|
+ )
|
|
|
+ OR pm.RecID IN (
|
|
|
+ SELECT pd.PurOrdRecID
|
|
|
+ FROM PurOrdDetail pd
|
|
|
+ INNER JOIN srm_pr_main pr
|
|
|
+ ON (pr.pr_billno = pd.Req OR pr.SAP_pr_billno = pd.Req)
|
|
|
+ AND pr.tenant_id = pd.tenant_id
|
|
|
+ WHERE pr.pr_mono IN (
|
|
|
+ SELECT me.moentry_mono FROM mes_moentry me
|
|
|
+ WHERE me.soentry_id = @EntryId AND me.tenant_id = @TenantId
|
|
|
+ )
|
|
|
+ AND pr.tenant_id = @TenantId
|
|
|
+ AND IFNULL(pr.state, 0) <> 0
|
|
|
+ AND IFNULL(pr.IsDeleted, 0) = 0
|
|
|
+ )
|
|
|
+ )
|
|
|
) AS t
|
|
|
- ORDER BY t.PoBillNo
|
|
|
+ ORDER BY PoBillno
|
|
|
""";
|
|
|
return await _db.Ado.SqlQueryAsync<FlowPoRow>(sql, new { EntryId = entryId, TenantId = tenantId });
|
|
|
}
|
|
|
|
|
|
- // ── Tab5 采购申请(MySQL)──
|
|
|
+ // ── Tab5 采购申请(MySQL:参考工单执行跟踪,pr_mono 直连工单)──
|
|
|
private async Task<List<FlowPrRow>> QueryPr(long entryId)
|
|
|
{
|
|
|
var tenantId = Infrastructure.AidopTenantScope.ResolveOrThrow(_userManager);
|
|
|
@@ -405,29 +422,31 @@ public class OrderDeliveryService : IDynamicApiController, ITransient
|
|
|
SELECT
|
|
|
ROW_NUMBER() OVER (ORDER BY pm.pr_billno) AS Sno,
|
|
|
pm.pr_billno AS PrBillNo,
|
|
|
- ic.number AS Number,
|
|
|
- pm.icitem_name AS IcItemName,
|
|
|
- ic.model AS Model,
|
|
|
- pm.pr_purchasenumber AS PrPurchaseNumber,
|
|
|
- pm.pr_purchasename AS PrPurchaseName,
|
|
|
- CAST(pm.pr_aqty AS DECIMAL(18, 2)) AS PrAQty,
|
|
|
+ IFNULL(ic.number, '') AS Number,
|
|
|
+ IFNULL(pm.icitem_name, '') AS IcItemName,
|
|
|
+ IFNULL(ic.model, '') AS Model,
|
|
|
+ IFNULL(pm.pr_purchasenumber, '') AS PrPurchaseNumber,
|
|
|
+ IFNULL(pm.pr_purchasename, '') AS PrPurchaseName,
|
|
|
+ CAST(IFNULL(pm.pr_aqty, 0) AS DECIMAL(18, 4)) AS PrAQty,
|
|
|
pm.pr_ssend_date AS PrSsendDate,
|
|
|
pm.pr_sarrive_date AS PrSarriveDate,
|
|
|
- pm.pr_unit AS PrUnit,
|
|
|
- pm.pr_purchaser AS PrPurchaser
|
|
|
+ IFNULL(pm.pr_unit, '') AS PrUnit,
|
|
|
+ IFNULL(pm.pr_purchaser, '') AS PrPurchaser
|
|
|
FROM srm_pr_main pm
|
|
|
- LEFT JOIN srm_po_occupy occ ON pm.Id = occ.polist_id AND CAST(pm.factory_id AS CHAR(64)) = CAST(occ.factory_id AS CHAR(64)) AND occ.tenant_id = pm.tenant_id
|
|
|
LEFT JOIN ic_item ic ON pm.icitem_id = ic.Id
|
|
|
- LEFT JOIN mes_morder mo ON mo.id = occ.morder_id AND mo.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN mes_moentry me ON mo.id = me.moentry_moid AND me.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN crm_seorderentry se ON me.soentry_id = se.id
|
|
|
- WHERE se.id = @EntryId AND se.tenant_id = @TenantId AND pm.state <> 0 AND pm.IsDeleted = 0
|
|
|
+ WHERE pm.pr_mono IN (
|
|
|
+ SELECT me.moentry_mono FROM mes_moentry me
|
|
|
+ WHERE me.soentry_id = @EntryId AND me.tenant_id = @TenantId
|
|
|
+ )
|
|
|
+ AND pm.tenant_id = @TenantId
|
|
|
+ AND IFNULL(pm.state, 0) <> 0
|
|
|
+ AND pm.IsDeleted = 0
|
|
|
ORDER BY pm.pr_billno
|
|
|
""";
|
|
|
return await _db.Ado.SqlQueryAsync<FlowPrRow>(sql, new { EntryId = entryId, TenantId = tenantId });
|
|
|
}
|
|
|
|
|
|
- // ── Tab5 物料交货单(MySQL:srm_polist_ds)──
|
|
|
+ // ── Tab5 物料交货单(MySQL:经采购订单关联到交货单 srm_polist_ds)──
|
|
|
private async Task<List<FlowDeliveryScheduleRow>> QueryDeliverySchedule(long entryId)
|
|
|
{
|
|
|
var tenantId = Infrastructure.AidopTenantScope.ResolveOrThrow(_userManager);
|
|
|
@@ -446,27 +465,47 @@ public class OrderDeliveryService : IDynamicApiController, ITransient
|
|
|
t.SentQty,
|
|
|
t.RestQty
|
|
|
FROM (
|
|
|
- SELECT
|
|
|
- ds.dsnum AS DsNum,
|
|
|
+ SELECT DISTINCT
|
|
|
ds.ponumber AS PoNumber,
|
|
|
+ ds.dsnum AS DsNum,
|
|
|
ds.itemnum AS ItemNum,
|
|
|
- im.Descr AS Descr,
|
|
|
+ IFNULL(im.Descr, '') AS Descr,
|
|
|
ds.suppliercode AS SupplierCode,
|
|
|
ds.supplier AS Supplier,
|
|
|
ds.requestdate AS RequestDate,
|
|
|
ds.needdate AS NeedDate,
|
|
|
- ds.schedqty AS SchedQty,
|
|
|
- ds.sentqty AS SentQty,
|
|
|
- ds.restqty AS RestQty
|
|
|
- FROM srm_po_main pm
|
|
|
- LEFT JOIN srm_po_list pl ON pm.id = pl.po_id AND pl.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN srm_po_occupy occ ON pl.Id = occ.polist_id AND CAST(pm.factory_id AS CHAR(64)) = CAST(occ.factory_id AS CHAR(64)) AND occ.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN mes_morder mo ON mo.id = occ.morder_id AND mo.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN mes_moentry me ON mo.id = me.moentry_moid AND me.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN crm_seorderentry se ON me.soentry_id = se.id
|
|
|
- LEFT JOIN srm_polist_ds ds ON pl.po_billno = ds.ponumber AND pl.ItemNum = ds.itemnum AND ds.tenant_id = pm.tenant_id
|
|
|
- LEFT JOIN ItemMaster im ON ds.itemnum = im.ItemNum AND im.tenant_id = pm.tenant_id
|
|
|
- WHERE se.id = @EntryId AND se.tenant_id = @TenantId AND pm.IsDeleted = 0
|
|
|
+ CAST(IFNULL(ds.schedqty, 0) AS DECIMAL(18, 4)) AS SchedQty,
|
|
|
+ CAST(IFNULL(ds.sentqty, 0) AS DECIMAL(18, 4)) AS SentQty,
|
|
|
+ CAST(IFNULL(ds.restqty, 0) AS DECIMAL(18, 4)) AS RestQty
|
|
|
+ FROM PurOrdMaster pm
|
|
|
+ INNER JOIN srm_polist_ds ds
|
|
|
+ ON pm.PurOrd = ds.ponumber
|
|
|
+ AND ds.tenant_id = pm.tenant_id
|
|
|
+ LEFT JOIN ItemMaster im
|
|
|
+ ON ds.itemnum = im.ItemNum
|
|
|
+ AND (im.tenant_id = pm.tenant_id OR pm.tenant_id IS NULL)
|
|
|
+ WHERE pm.tenant_id = @TenantId
|
|
|
+ AND IFNULL(pm.IsActive, 0) <= 1
|
|
|
+ AND (
|
|
|
+ pm.WorkOrd IN (
|
|
|
+ SELECT me.moentry_mono FROM mes_moentry me
|
|
|
+ WHERE me.soentry_id = @EntryId AND me.tenant_id = @TenantId
|
|
|
+ )
|
|
|
+ OR pm.RecID IN (
|
|
|
+ SELECT pd.PurOrdRecID
|
|
|
+ FROM PurOrdDetail pd
|
|
|
+ INNER JOIN srm_pr_main pr
|
|
|
+ ON (pr.pr_billno = pd.Req OR pr.SAP_pr_billno = pd.Req)
|
|
|
+ AND pr.tenant_id = pd.tenant_id
|
|
|
+ WHERE pr.pr_mono IN (
|
|
|
+ SELECT me.moentry_mono FROM mes_moentry me
|
|
|
+ WHERE me.soentry_id = @EntryId AND me.tenant_id = @TenantId
|
|
|
+ )
|
|
|
+ AND pr.tenant_id = @TenantId
|
|
|
+ AND IFNULL(pr.state, 0) <> 0
|
|
|
+ AND IFNULL(pr.IsDeleted, 0) = 0
|
|
|
+ )
|
|
|
+ )
|
|
|
) AS t
|
|
|
ORDER BY t.DsNum
|
|
|
""";
|