Explorar o código

采购订单表替换

Pengxy hai 3 semanas
pai
achega
8a3bc2d826

+ 1 - 1
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/PoActionListDto.cs

@@ -9,7 +9,7 @@ namespace Business.ResourceExamineManagement.Dto
 {
     public class PoActionListDto
     {
-        public List<srm_po_main> poMain { get; set; } = new List<srm_po_main>();
+        //public List<srm_po_main> poMain { get; set; } = new List<srm_po_main>();
         public List<srm_po_list> polist { get; set; } = new List<srm_po_list>();
         public List<mo_srm_po_main> mopoMain { get; set; } = new List<mo_srm_po_main>();
         public List<mo_srm_po_list> mopolist { get; set; } = new List<mo_srm_po_list>();

+ 81 - 56
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -129,13 +129,11 @@ namespace Business.ResourceExamineManagement
         /// 采购订单表
         /// </summary>
         private readonly IRepository<mo_srm_po_main, long> _srm_po_main;
-        private IRepository<srm_po_main, long> _mysql_srm_po_main;
 
         /// <summary>
         /// 采购订单明细表
         /// </summary>
         private readonly IRepository<mo_srm_po_list, long> _srm_po_list;
-        private IRepository<srm_po_list, long> _mysql_srm_po_list;
         private readonly IRepository<ReplenishmentWeekPlan, long> _replenishmentWeekPlan;
 
         /// <summary>
@@ -463,8 +461,6 @@ namespace Business.ResourceExamineManagement
             IRepository<mes_moentry, long> mysql_mes_moentry,
             IRepository<mes_process, long> mysql_mes_process,
             IRepository<mes_tech_process, long> mysql_mes_tech_process,
-            IRepository<srm_po_main, long> mysql_srm_po_main,
-            IRepository<srm_po_list, long> mysql_srm_po_list,
             IRepository<srm_po_occupy, long> mysql_srm_po_occupy,
             IRepository<srm_purchase, long> mysql_srm_purchase,
             IRepository<b_examine_result, long> mysql_examine_result,
@@ -575,8 +571,6 @@ namespace Business.ResourceExamineManagement
             _mysql_mes_mooccupy = mysql_mes_mooccupy;
             _mysql_mes_morder = mysql_mes_morder;
             _mysql_mes_moentry = mysql_mes_moentry;
-            _mysql_srm_po_main = mysql_srm_po_main;
-            _mysql_srm_po_list = mysql_srm_po_list;
             _mysql_srm_po_occupy = mysql_srm_po_occupy;
             _mysql_srm_purchase = mysql_srm_purchase;
             _mysql_examine_result = mysql_examine_result;
@@ -1669,14 +1663,9 @@ namespace Business.ResourceExamineManagement
                 {
                     try
                     {
-                        if (poaction.poMain.Any())
+                        if (poaction.poMasterList.Any())
                         {
                             _businessDbContext.UpdateRange(alllist);
-                            await _businessDbContext.AddRangeAsync(poaction.poMain);
-                        }
-                        if (poaction.polist.Any())
-                        {
-                            await _businessDbContext.AddRangeAsync(poaction.polist);
                         }
                         if (poaction.poOccupiesList.Any())
                         {
@@ -1793,14 +1782,9 @@ namespace Business.ResourceExamineManagement
             {
                 try
                 {
-                    if (poaction.poMain.Any())
+                    if ( poaction.poMasterList.Any())
                     {
                         _businessDbContext.UpdateRange(prlist);
-                        await _businessDbContext.AddRangeAsync(poaction.poMain);
-                    }
-                    if (poaction.polist.Any())
-                    {
-                        await _businessDbContext.AddRangeAsync(poaction.polist);
                     }
                     if (poaction.poOccupiesList.Any())
                     {
@@ -2363,28 +2347,73 @@ namespace Business.ResourceExamineManagement
                     await MongoHelper<mo_mes_mooccupy>.InsertManyAsync(moMes_mooccupy);
                 }
             }
-            //根据物料信息,只同步在途未关闭的采购订单和采购申请
+            //根据物料信息,只同步在途未关闭的采购订单和采购申请(主数据来自 PurOrdMaster / PurOrdDetail)
 
-            //采购订单明细
-            var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
-            if (srm_po_list.Count > 0)
+            //采购订单明细 - 通过 ItemNum 关联 ic_item
+            var itemList = _mysql_ic_item.GetListAsync(x => x.factory_id == factoryId && x.company_id == companyId && itemIds.Contains(x.Id)).Result;
+            var itemNumbers = itemList.Select(x => x.number).ToList();
+            var purOrdDetails = _purOrdDetail.Select(x => x.Domain == factoryId.ToString() && itemNumbers.Contains(x.ItemNum)).ToList();
+            if (purOrdDetails.Count > 0)
             {
-                //采购订单--取出状态为在途的PO
-                var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.po_id).Contains(x.Id) && x.state != 3).Result;
-                if (srm_po_main.Count > 0)
+                var purOrdMasters = _purOrdMaster.Select(x => x.Domain == factoryId.ToString() && purOrdDetails.Select(c => c.PurOrdRecID).Contains(x.RecID) && (x.Status == null || x.Status.ToUpper() != "C")).ToList();
+                if (purOrdMasters.Count > 0)
                 {
-                    var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
+                    var srm_po_main_list = new List<srm_po_main>();
+                    foreach (var master in purOrdMasters)
+                    {
+                        srm_po_main_list.Add(new srm_po_main
+                        {
+                            po_billno = master.PurOrd,
+                            supplier_no = master.Supp,
+                            po_ssend_date = master.OrdDate,
+                            po_tax_rate = master.Tax1,
+                            supplier_type = master.USAGE,
+                            currency = master.Curr == "CNY" ? 1 : 0,
+                            suppliertelephone = master.CustPhone,
+                            supplierdddress = master.CustAddress,
+                            state = master.Status == null || master.Status.ToUpper() != "C" ? 1 : 3,
+                            factory_id = factoryId,
+                            company_id = companyId,
+                            tenant_id = companyId
+                        });
+                    }
+                    var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main_list);
                     moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_main>.InsertManyAsync(moSrm_po_main);
 
-                    //订单明细--根据在途PO过滤出有效的Po_list
-                    srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
-                    var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
+                    purOrdDetails = purOrdDetails.Where(s => purOrdMasters.Select(x => x.RecID).Contains(s.PurOrdRecID)).ToList();
+                    var srm_po_list_data = new List<srm_po_list>();
+                    foreach (var detail in purOrdDetails)
+                    {
+                        var icitem = itemList.Find(a => a.number == detail.ItemNum);
+                        srm_po_list_data.Add(new srm_po_list
+                        {
+                            po_id = detail.PurOrdRecID,
+                            po_billno = detail.PurOrd,
+                            polist_row = detail.Line,
+                            ItemNum = detail.ItemNum,
+                            qty = detail.QtyOrded,
+                            plan_qty = detail.QtyOrded,
+                            rqty = detail.RctQty,
+                            rarrdate = detail.DueDate,
+                            price = detail.PurCost.GetValueOrDefault(),
+                            netprice = detail.PurCost.GetValueOrDefault(),
+                            total_price = detail.QtyOrded * detail.PurCost.GetValueOrDefault(),
+                            netmoney = detail.QtyOrded * detail.PurCost.GetValueOrDefault(),
+                            rate = detail.TaxRate,
+                            state = detail.Status == null || detail.Status.ToUpper() != "C" ? 1 : 0,
+                            pr_billno = detail.Req,
+                            icitem_id = icitem?.Id,
+                            factory_id = factoryId,
+                            company_id = companyId,
+                            tenant_id = companyId
+                        });
+                    }
+                    var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list_data);
                     moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_list>.InsertManyAsync(moSrm_po_list);
                 }
-                //采购订单明细占用详情
-                var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
+                var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && purOrdDetails.Select(c => (long)c.RecID).Contains(x.polist_id.GetValueOrDefault())).Result;
                 if (srm_po_occupy.Count > 0)
                 {
                     var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
@@ -2728,9 +2757,6 @@ namespace Business.ResourceExamineManagement
                     row++;
                 });
             }
-            poaction.poMain.AddRange(polist);
-            poaction.polist.AddRange(podetaillist);
-
             var nbrlistDto = _serialNumberAppService.GetBillNo(domain, "DO", polist.Count, "admin", 1);
             int index = 0;
             foreach (var p in polist)
@@ -4949,23 +4975,23 @@ namespace Business.ResourceExamineManagement
             leadTimeList = GetLeadTime(icitemlist, param.company_id, param.factoryId);//提前期列表
             supplierList = GetSupplier(itemIds, param.company_id, param.factoryId);//供应商列表
 
-            //交期回复
-            var sql = $"SELECT b.id AS polist_id,b.po_id,a.id,a.wlbm,a.cgdd, a.ddhh, IF(a.jhdsl > c.QtyOrded, c.QtyOrded, a.jhdsl) AS jhdsl, DATE(a.jqhf) AS jqhf,a.flag,a.gysdm,b.pr_purchase_id " +
+            //交期回复(采购行来自 PurOrdDetail,对应原 srm_po_list)
+            var sql = $"SELECT c.RecID AS polist_id, c.PurOrdRecID AS po_id, a.id, a.wlbm, a.cgdd, a.ddhh, IF(a.jhdsl > c.QtyOrded, c.QtyOrded, a.jhdsl) AS jhdsl, DATE(a.jqhf) AS jqhf, a.flag, a.gysdm, CAST(0 AS SIGNED) AS pr_purchase_id " +
                 $"FROM (SELECT  wlbm,cgdd,ddhh, flag, gysdm,SUM(CAST(IFNULL(jhdsl, 0) AS DECIMAL(18,8))) AS jhdsl,MAX(DATE(jqhf)) AS jqhf, MAX(id) AS id FROM scm_jhjh_jq WHERE flag = 0 OR (flag = 2 AND DATEDIFF(CURDATE(), IFNULL(DATE(jqhf), CURDATE())) >= 1) GROUP BY wlbm, cgdd, ddhh, flag, gysdm) a " +
-                $"INNER JOIN srm_po_list b ON a.cgdd = b.po_billno AND a.ddhh = b.polist_row INNER JOIN PurOrdDetail c ON b.po_billno = c.PurOrd AND b.polist_row = c.Line WHERE c.status != 'C' AND c.QtyOrded > c.RctQty;";
+                $"INNER JOIN PurOrdDetail c ON a.cgdd = c.PurOrd AND a.ddhh = c.Line WHERE (c.Status IS NULL OR UPPER(c.Status) <> 'C') AND c.QtyOrded > c.RctQty;";
             _CalcBomViewAppService.scm_Jhjh_Jqs = _businessDbContext.scm_jhjh_jqDto.FromSqlRaw(sql).ToList();
             //送货单子表所有未完成的数据,并且排除检验中数量
-            sql = $"SELECT b.id,b.po_billline,b.jhdbh,IFNULL(a.shzt, '待收') AS shzt,b.jhdhh,b.sh_material_code,b.sh_material_name, b.po_bill, b.sh_delivery_quantity - IFNULL(m.qty, 0) AS sh_delivery_quantity, a.sh_purchase_num, c.id AS sh_purchase_id,DATE(a.jhshrq) AS jhshrq,DATE(a.yjdhrq) AS yjdhrq,d.id AS polist_id FROM scm_shd a " +
-            $"INNER JOIN scm_shdzb b ON a.id = b.glid INNER JOIN srm_po_list d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.po_billno AND b.po_billline = d.polist_row AND d.state = 1 LEFT JOIN srm_po_main e ON d.po_id = e.id LEFT JOIN srm_supplier c ON a.sh_purchase_num = c.supplier_no " +
+            sql = $"SELECT b.id,b.po_billline,b.jhdbh,IFNULL(a.shzt, '待收') AS shzt,b.jhdhh,b.sh_material_code,b.sh_material_name, b.po_bill, b.sh_delivery_quantity - IFNULL(m.qty, 0) AS sh_delivery_quantity, a.sh_purchase_num, c.id AS sh_purchase_id,DATE(a.jhshrq) AS jhshrq,DATE(a.yjdhrq) AS yjdhrq,d.RecID AS polist_id FROM scm_shd a " +
+            $"INNER JOIN scm_shdzb b ON a.id = b.glid INNER JOIN PurOrdDetail d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.PurOrd AND CAST(b.po_billline AS SIGNED) = d.Line AND (d.Status IS NULL OR UPPER(d.Status) <> 'C') LEFT JOIN PurOrdMaster e ON d.PurOrdRecID = e.RecID LEFT JOIN srm_supplier c ON a.sh_purchase_num = c.supplier_no " +
             $"LEFT JOIN (SELECT PurOrd,PurLine,ShipperNbr,ShipperLine, SUM(qty) AS qty FROM MissedPrint WHERE Status = 'I' GROUP BY PurOrd, PurLine, ShipperNbr, ShipperLine) m ON b.po_bill = m.PurOrd  AND b.po_billline = m.PurLine AND m.ShipperNbr = a.shddh  AND m.ShipperLine = b.hh " +
-            $"WHERE b.jhdbh != '' AND e.state != '3' AND IFNULL(a.shzt, '待收') != '完成' AND (IFNULL(m.qty, 0) = 0 OR IFNULL(m.qty, 0) < b.sh_delivery_quantity);";
+            $"WHERE b.jhdbh != '' AND (e.Status IS NULL OR UPPER(IFNULL(e.Status,'')) <> 'C') AND IFNULL(a.shzt, '待收') != '完成' AND (IFNULL(m.qty, 0) = 0 OR IFNULL(m.qty, 0) < b.sh_delivery_quantity);";
             _CalcBomViewAppService.scm_Shdzbs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
 
             //送货单子表所有待检验数据
-            sql = $"SELECT  b.id,b.po_billline,b.jhdbh,IFNULL(a.shzt, '待收') AS shzt,b.jhdhh,b.sh_material_code,b.sh_material_name, b.po_bill,IFNULL(m.qty, 0) AS sh_delivery_quantity,a.sh_purchase_num,c.id AS sh_purchase_id, DATE(a.jhshrq) AS jhshrq,DATE(a.yjdhrq) AS yjdhrq,d.id AS polist_id FROM scm_shd a " +
-                $"INNER JOIN scm_shdzb b ON a.id = b.glid INNER JOIN srm_po_list d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.po_billno AND b.po_billline = d.polist_row AND d.state = 1 LEFT JOIN srm_po_main e ON d.po_id = e.id LEFT JOIN srm_supplier c ON a.sh_purchase_num = c.supplier_no " +
+            sql = $"SELECT  b.id,b.po_billline,b.jhdbh,IFNULL(a.shzt, '待收') AS shzt,b.jhdhh,b.sh_material_code,b.sh_material_name, b.po_bill,IFNULL(m.qty, 0) AS sh_delivery_quantity,a.sh_purchase_num,c.id AS sh_purchase_id, DATE(a.jhshrq) AS jhshrq,DATE(a.yjdhrq) AS yjdhrq,d.RecID AS polist_id FROM scm_shd a " +
+                $"INNER JOIN scm_shdzb b ON a.id = b.glid INNER JOIN PurOrdDetail d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.PurOrd AND CAST(b.po_billline AS SIGNED) = d.Line AND (d.Status IS NULL OR UPPER(d.Status) <> 'C') LEFT JOIN PurOrdMaster e ON d.PurOrdRecID = e.RecID LEFT JOIN srm_supplier c ON a.sh_purchase_num = c.supplier_no " +
                 $"LEFT JOIN (SELECT PurOrd,PurLine,ShipperNbr,ShipperLine,SUM(qty) AS qty FROM MissedPrint WHERE Status = 'I' GROUP BY PurOrd, PurLine, ShipperNbr, ShipperLine) m ON b.po_bill = m.PurOrd AND b.po_billline = m.PurLine AND m.ShipperNbr = a.shddh AND m.ShipperLine = b.hh " +
-                $"WHERE b.jhdbh != '' AND IFNULL(m.qty, 0) >= b.sh_delivery_quantity AND IFNULL(m.qty, 0) != 0 AND e.state != '3';";
+                $"WHERE b.jhdbh != '' AND IFNULL(m.qty, 0) >= b.sh_delivery_quantity AND IFNULL(m.qty, 0) != 0 AND (e.Status IS NULL OR UPPER(IFNULL(e.Status,'')) <> 'C');";
             _CalcBomViewAppService.scm_ShdzbJYs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
 
 
@@ -5050,31 +5076,30 @@ namespace Business.ResourceExamineManagement
             leadTimeList = GetLeadTime(icitemlist, param.company_id, param.factoryId);//提前期列表
             supplierList = GetSupplier(itemIds, param.company_id, param.factoryId);//供应商列表
 
-            //交期回复
-            var sql = $"SELECT b.id AS polist_id,b.po_id,a.id,a.wlbm,a.cgdd,a.ddhh,IF(a.jhdsl > c.QtyOrded, c.QtyOrded, a.jhdsl) AS jhdsl, DATE(a.jqhf) AS jqhf,a.flag,a.gysdm,b.pr_purchase_id " +
+            //交期回复(采购行来自 PurOrdDetail)
+            var sql = $"SELECT c.RecID AS polist_id, c.PurOrdRecID AS po_id, a.id, a.wlbm, a.cgdd, a.ddhh, IF(a.jhdsl > c.QtyOrded, c.QtyOrded, a.jhdsl) AS jhdsl, DATE(a.jqhf) AS jqhf, a.flag, a.gysdm, CAST(0 AS SIGNED) AS pr_purchase_id " +
                 $"FROM (SELECT wlbm,cgdd,ddhh,flag,gysdm,SUM(CAST(IFNULL(jhdsl, 0) AS DECIMAL(18,8))) AS jhdsl,MAX(DATE(jqhf)) AS jqhf, MAX(id) AS id  " +
                 $"FROM scm_jhjh_jq WHERE flag = 0  OR (flag = 2 AND DATEDIFF(CURDATE(), IFNULL(DATE(jqhf), CURDATE())) >= 1) GROUP BY wlbm, cgdd, ddhh, flag, gysdm) a " +
-                $"INNER JOIN srm_po_list b ON a.cgdd = b.po_billno AND a.ddhh = b.polist_row " +
-                $"INNER JOIN PurOrdDetail c ON b.po_billno = c.PurOrd AND b.polist_row = c.Line " +
-                $"WHERE c.status != 'C' AND c.QtyOrded > c.RctQty ";
+                $"INNER JOIN PurOrdDetail c ON a.cgdd = c.PurOrd AND a.ddhh = c.Line " +
+                $"WHERE (c.Status IS NULL OR UPPER(c.Status) <> 'C') AND c.QtyOrded > c.RctQty ";
             _CalcBomViewAppService.scm_Jhjh_Jqs = _businessDbContext.scm_jhjh_jqDto.FromSqlRaw(sql).ToList();
             //送货单子表所有未完成的数据,并且排除检验中数量
-            sql = $"SELECT b.id,po_billline,jhdbh,IFNULL(a.shzt, '待收') AS shzt,jhdhh, b.sh_material_code, b.sh_material_name, b.po_bill, b.sh_delivery_quantity - IFNULL(m.qty, 0) AS sh_delivery_quantity,a.sh_purchase_num,c.id AS sh_purchase_id,DATE(a.jhshrq) AS jhshrq,DATE(a.yjdhrq) AS yjdhrq, d.id AS polist_id " +
+            sql = $"SELECT b.id,po_billline,jhdbh,IFNULL(a.shzt, '待收') AS shzt,jhdhh, b.sh_material_code, b.sh_material_name, b.po_bill, b.sh_delivery_quantity - IFNULL(m.qty, 0) AS sh_delivery_quantity,a.sh_purchase_num,c.id AS sh_purchase_id,DATE(a.jhshrq) AS jhshrq,DATE(a.yjdhrq) AS yjdhrq, d.RecID AS polist_id " +
                 $"FROM scm_shd a INNER JOIN scm_shdzb b ON a.id = b.glid " +
-                $"INNER JOIN srm_po_list d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.po_billno AND b.po_billline = d.polist_row AND d.state = 1 " +
-                $"LEFT JOIN srm_po_main e ON d.po_id = e.id " +
+                $"INNER JOIN PurOrdDetail d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.PurOrd AND CAST(b.po_billline AS SIGNED) = d.Line AND (d.Status IS NULL OR UPPER(d.Status) <> 'C') " +
+                $"LEFT JOIN PurOrdMaster e ON d.PurOrdRecID = e.RecID " +
                 $"LEFT JOIN srm_supplier c ON a.sh_purchase_num = c.supplier_no " +
                 $"LEFT JOIN (SELECT  PurOrd, PurLine, ShipperNbr,ShipperLine, SUM(qty) AS qty FROM MissedPrint  WHERE Status = 'I' GROUP BY PurOrd, PurLine, ShipperNbr, ShipperLine) m " +
-                $"ON b.po_bill = m.PurOrd AND b.po_billline = m.PurLine AND m.ShipperNbr = a.shddh  AND m.ShipperLine = b.hh WHERE jhdbh != '' AND e.state <> '3' AND IFNULL(a.shzt, '待收') != '完成' AND (IFNULL(m.qty, 0) = 0 OR IFNULL(m.qty, 0) < b.sh_delivery_quantity)";
+                $"ON b.po_bill = m.PurOrd AND b.po_billline = m.PurLine AND m.ShipperNbr = a.shddh  AND m.ShipperLine = b.hh WHERE jhdbh != '' AND (e.Status IS NULL OR UPPER(IFNULL(e.Status,'')) <> 'C') AND IFNULL(a.shzt, '待收') != '完成' AND (IFNULL(m.qty, 0) = 0 OR IFNULL(m.qty, 0) < b.sh_delivery_quantity)";
             _CalcBomViewAppService.scm_Shdzbs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();
 
             //送货单子表所有待检验数据
-            sql = $"SELECT b.id,po_billline,jhdbh, IFNULL(a.shzt, '待收') AS shzt,jhdhh, b.sh_material_code, b.sh_material_name, b.po_bill,IFNULL(m.qty, 0) AS sh_delivery_quantity, a.sh_purchase_num,c.id AS sh_purchase_id, DATE(a.jhshrq) AS jhshrq, DATE(a.yjdhrq) AS yjdhrq,d.id AS polist_id FROM scm_shd a INNER JOIN scm_shdzb b ON a.id = b.glid " +
-                $"INNER JOIN srm_po_list d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.po_billno AND b.po_billline = d.polist_row AND d.state = 1 " +
-                $"LEFT JOIN srm_po_main e ON d.po_id = e.id " +
+            sql = $"SELECT b.id,po_billline,jhdbh, IFNULL(a.shzt, '待收') AS shzt,jhdhh, b.sh_material_code, b.sh_material_name, b.po_bill,IFNULL(m.qty, 0) AS sh_delivery_quantity, a.sh_purchase_num,c.id AS sh_purchase_id, DATE(a.jhshrq) AS jhshrq, DATE(a.yjdhrq) AS yjdhrq,d.RecID AS polist_id FROM scm_shd a INNER JOIN scm_shdzb b ON a.id = b.glid " +
+                $"INNER JOIN PurOrdDetail d ON b.sh_material_code = d.ItemNum AND b.po_bill = d.PurOrd AND CAST(b.po_billline AS SIGNED) = d.Line AND (d.Status IS NULL OR UPPER(d.Status) <> 'C') " +
+                $"LEFT JOIN PurOrdMaster e ON d.PurOrdRecID = e.RecID " +
                 $"LEFT JOIN srm_supplier c ON a.sh_purchase_num = c.supplier_no " +
                 $"LEFT JOIN (SELECT PurOrd, PurLine, ShipperNbr, ShipperLine, SUM(qty) AS qty  FROM MissedPrint WHERE Status = 'I' GROUP BY PurOrd, PurLine, ShipperNbr, ShipperLine) m ON b.po_bill = m.PurOrd  AND b.po_billline = m.PurLine  AND m.ShipperNbr = a.shddh  AND m.ShipperLine = b.hh " +
-                $"WHERE jhdbh != '' AND IFNULL(m.qty, 0) >= b.sh_delivery_quantity AND IFNULL(m.qty, 0) <> 0 AND e.state <> '3'";
+                $"WHERE jhdbh != '' AND IFNULL(m.qty, 0) >= b.sh_delivery_quantity AND IFNULL(m.qty, 0) <> 0 AND (e.Status IS NULL OR UPPER(IFNULL(e.Status,'')) <> 'C')";
             _CalcBomViewAppService.scm_ShdzbJYs = _businessDbContext.scm_shdzbDto.FromSqlRaw(sql).ToList();