From 18ca42bc7a74433f735336bdfeaeb81c81633f39 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期四, 24 七月 2025 20:22:27 +0800
Subject: [PATCH] 采购订单接口bug修复

---
 StandardPda/MES.Service/service/BasicData/MesRohInManager.cs |  114 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 85 insertions(+), 29 deletions(-)

diff --git a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
index af6f4d7..aae6bfb 100644
--- a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
+++ b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
@@ -3,6 +3,7 @@
 using MES.Service.Modes;
 using MES.Service.util;
 using SqlSugar;
+using System.Collections.Generic;
 
 namespace MES.Service.service.BasicData;
 
@@ -18,12 +19,17 @@
         var mesRohInDatas =
             GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type);
 
+         var erpLineDetailsDB = GetErpLineDetailsDB(rohIn.ErpLineDetails, rohInErpRohIn.Type);
+         
+       
+        
+
         return UseTransaction(db =>
         {
             return rohInErpRohIn.Type switch
             {
                 "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn,
-                    mesRohInDatas)
+                    mesRohInDatas, erpLineDetailsDB)
                     ? 1
                     : 0,
                 "3" => DeleteData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
@@ -58,14 +64,16 @@
 
     // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
     private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,
-        List<MesRohInData> mesRohInDatas)
+        List<MesRohInData> mesRohInDatas, List<ErpLineDetailsDB> erpLineDetails)
     {
         if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
 
         if (mesRohInDatas.Count > 0)
             db.Deleteable<MesRohInData>()
                 .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
-
+        if (mesRohInDatas.Count > 0)
+            db.Deleteable<ErpLineDetailsDB>()
+                .Where(s => s.Eid == mesRohIn.EbelnK3id).ExecuteCommand();
         //var orUpdate = base.Insert(mesRohIn);
         //var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas);
         var orUpdate = db.Insertable(mesRohIn)
@@ -76,8 +84,15 @@
             .IgnoreColumnsNull()
             .ExecuteCommand() > 0;
 
+        var ba1OrUpdate = db.Insertable(erpLineDetails).PageSize(1)
+       .IgnoreColumnsNull()
+       .ExecuteCommand() > 0;
+        if (erpLineDetails==null ||erpLineDetails.Count==0)
+        {
+            ba1OrUpdate = true;
+        }
 
-        if (orUpdate && baOrUpdate) return true;
+        if (orUpdate && baOrUpdate&& ba1OrUpdate) return true;
         throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
     }
 
@@ -91,22 +106,19 @@
     // 灏� ErpRohIn 瀵硅薄杞崲涓� MesRohIn 瀵硅薄鐨勬柟娉�
     private MesRohIn GetMesRohIn(ErpRohIn rohIn)
     {
-        var eid = Convert.ToDecimal(rohIn.id);
+        var eid = rohIn.id;
         var mesRohIn = new MesRohIn();
 
         var single = base.GetSingle(it => it.EbelnK3id == eid);
         if (single != null) mesRohIn.Id = single.Id;
 
         var mesLinkU9 = Db.Queryable<MesLinkU9>()
-            .Where(s=>s.U9Id == rohIn.FSupplierId
-                      && s.OrgId == rohIn.FReceiveOrgId
-                      && s.TableType == "MES_SUPPLIER").First();
+            .Where(s => s.U9Id == rohIn.FSupplierId
+                        && s.OrgId == rohIn.FReceiveOrgId
+                        && s.TableType == "MES_SUPPLIER").First();
 
-        if (mesLinkU9 != null)
-        {
-            mesRohIn.Supplier = mesLinkU9.MesId;
-        }
-        
+        if (mesLinkU9 != null) mesRohIn.Supplier = mesLinkU9.MesId;
+
         mesRohIn.EbelnK3id = eid;
         mesRohIn.BillNo = rohIn.FBillNo;
         mesRohIn.DocumentStatus = rohIn.FDocumentStatus;
@@ -115,7 +127,7 @@
         if (rohIn.FDate != null)
             mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,
                 "yyyy-MM-dd HH:mm:ss", null);
-        
+
         mesRohIn.CloseStatus = rohIn.FCloseStatus;
         mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
         mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
@@ -136,10 +148,8 @@
         mesRohIn.ErpCheckBy = rohIn.FApproverId;
         mesRohIn.ErpCheckDate = rohIn.FApproveDate;
         mesRohIn.Changereason = rohIn.PubDescSeg2;
-        mesRohIn.ReceiveOrg = Convert.ToDecimal(rohIn.FReceiveOrgId);
+        mesRohIn.ReceiveOrg = rohIn.FReceiveOrgId;
         mesRohIn.Remarks = rohIn.Remarks;
-        mesRohIn.CancellationStatus = rohIn.FCancelStatus;
-
         mesRohIn.SrcDocType = rohIn.FSrcDocType;
         mesRohIn.SrcDoc = rohIn.FSrcDoc;
         mesRohIn.TradePathName = rohIn.FTradePathName;
@@ -149,7 +159,7 @@
         mesRohIn.Version = rohIn.FVersion;
 
         //浣滃簾鐨勭浉鍏冲瓧娈�
-        // mesRohIn.CancellationStatus = rohIn.FCancelStatus;
+        mesRohIn.CancellationStatus = rohIn.FCancelStatus;
         // mesRohIn.CancellationPerson = rohIn.FCancellerId;
         //
         // if (rohIn.FCancelDate != null)
@@ -168,14 +178,14 @@
         {
             var entity = new MesRohInData
             {
-                EbelnK3id = Convert.ToDecimal(s.id),
-                ErpId = Convert.ToDecimal(s.Eid),
+                EbelnK3id = s.id,
+                ErpId = s.Eid,
                 BillNo = s.FBillNo,
                 OrderLineId = s.FSeq,
                 BusinessFreeze = s.FStatus,
                 PurchaseOrderLineNumber = s.FSeq,
                 SalesOrderId = s.FDemandBillEntrySeq,
-                
+
                 PurchaseUnit = s.FUnitId,
                 PurchaseQty = Convert.ToDecimal(s.FQty),
                 PricingUnit = s.FPriceUnitId,
@@ -203,24 +213,70 @@
                 DemandDocumentId = s.FDemandBillNo,
                 DemandDocumentLineId = s.FDemandBillEntrySeq,
                 RdProject = s.RdProject,
-                Project = s.Project,
                 ProjectPurchaser = s.ProjectPurchaser
             };
+
+            if (s.FDeliveryDate != null)
+                entity.DeliveryDate =
+                    DateTime.ParseExact(s.FDeliveryDate,
+                        "yyyy-MM-dd HH:mm:ss", null);
 
             var single = rohInDataManager.GetSingle(it =>
                 it.EbelnK3id == entity.EbelnK3id);
             if (single != null) entity.Id = single.Id;
-            
+
             //ItemId = s.FMaterialId,
             var mesLinkU9 = Db.Queryable<MesLinkU9>()
-                .Where(x=>x.U9Id == s.FMaterialId
-                          && x.OrgId == s.FReceiveOrgId
-                          && x.TableType == "MES_ITEMS").First();
+                .Where(x => x.U9Id == s.FMaterialId
+                            && x.OrgId == s.FReceiveOrgId
+                            && x.TableType == "MES_ITEMS").First();
 
-            if (mesLinkU9 != null)
+            if (mesLinkU9 != null) entity.ItemId = mesLinkU9.MesId;
+
+
+            var mesLinkU92 = Db.Queryable<MesLinkU9>()
+                .Where(x => x.U9Id == s.Project
+                            && x.OrgId == s.FReceiveOrgId
+                            && x.TableType == "MES_PROJECT").First();
+
+            if (mesLinkU92 != null) entity.Project = mesLinkU92.MesId;
+
+            return entity;
+        }).ToList();
+    }
+
+    private List<ErpLineDetailsDB> GetErpLineDetailsDB(
+        List<ErpLineDetails> erpLineDetails, string type)
+    {
+        if (erpLineDetails ==null)
+        {
+            return null;
+        }
+        return erpLineDetails.Select(s =>
+        {
+            var entity = new ErpLineDetailsDB
             {
-                entity.ItemId = mesLinkU9.MesId;
-            }
+                Mid= s.Mid,
+                Eid = s.Eid,
+                FlineNo = s.FlineNo,
+                FMaterialId = s.FMaterialId,
+                ReqQty = s.ReqQty,
+                PlannedQty = s.PlannedQty,
+                SupplierConfirmsQty = s.SupplierConfirmsQty,
+                RequestDeliveryDate = s.RequestDeliveryDate,
+                ActualArrivalQty = s.ActualArrivalQty
+
+
+            };
+
+            //ItemId = s.FMaterialId,
+            var mesLinkU9 = Db.Queryable<MesLinkU9>()
+                .Where(x => x.U9Id == s.FMaterialId
+                            && x.OrgId == s.FMaterialId
+                            && x.TableType == "MES_ITEMS").First();
+
+            if (mesLinkU9 != null) entity.FMaterialId = mesLinkU9.MesId;
+
 
             return entity;
         }).ToList();

--
Gitblit v1.9.3