From f476ec010c22cd4e3c6a119eea035cbf4594bfbb Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期五, 12 九月 2025 19:32:00 +0800
Subject: [PATCH] 1\修正收料通知单

---
 MES.Service/service/BasicData/MesRohInManager.cs |  198 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 158 insertions(+), 40 deletions(-)

diff --git a/MES.Service/service/BasicData/MesRohInManager.cs b/MES.Service/service/BasicData/MesRohInManager.cs
index 217fa4c..c1be11a 100644
--- a/MES.Service/service/BasicData/MesRohInManager.cs
+++ b/MES.Service/service/BasicData/MesRohInManager.cs
@@ -90,20 +90,33 @@
     {
         var eid = long.Parse(rohIn.id);
         var mesRohIn = new MesRohIn();
-
-
         var single = base.GetSingle(it => it.EbelnK3id == eid);
         if (single != null) mesRohIn.Guid = single.Guid;
-
         mesRohIn.EbelnK3id = eid;
         mesRohIn.BillNo = rohIn.FBillNo;
         mesRohIn.DocumentStatus = rohIn.FDocumentStatus;
         mesRohIn.DocumentType = rohIn.FBillTypeID;
         mesRohIn.BusinessType = rohIn.FBusinessType;
+        /*if (rohIn.FDate != null)
+           mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,
+                "yyyy-MM-d H:m:s", null);*/
 
-        if (rohIn.FDate != null)
-            mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,
-                "yyyy-MM-dd HH:mm:ss", null);
+        // 1. 澶勭悊 fDate锛堥噰璐棩鏈燂級
+        if (!rohIn.FDate.IsNullOrEmpty())
+        {
+            if (!DateTime.TryParseExact(rohIn.FDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                    DateTimeStyles.None, out DateTime purchaseDate))
+            {
+                throw new FormatException($"閲囪喘鏃ユ湡锛團Date锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+            }
+
+            mesRohIn.PurchaseDate = purchaseDate;
+        }
+        else
+        {
+            mesRohIn.PurchaseDate = null;
+        }
+
 
         mesRohIn.Supplier = rohIn.FSupplierId;
         mesRohIn.CloseStatus = rohIn.FCloseStatus;
@@ -117,36 +130,94 @@
         mesRohIn.Remarks = rohIn.Remarks;
         mesRohIn.CancellationStatus = rohIn.FCancelStatus;
         mesRohIn.CancellationPerson = rohIn.FCancellerId;
-
-        if (rohIn.FCancelDate != null)
+        /*if (rohIn.FCancelDate != null)
             if (!mesRohIn.CancellationPerson.IsNullOrEmpty())
                 mesRohIn.CancellationDate =
                     DateTime.ParseExact(rohIn.FCancelDate,
-                        "yyyy-MM-dd HH:mm:ss", null);
-
+                        "yyyy-MM-d H:m:s", null);
         mesRohIn.CreateBy = rohIn.FCreatorId;
-
         if (rohIn.FCreateDate != null)
             mesRohIn.CreateDate = DateTime.ParseExact(rohIn.FCreateDate,
-                "yyyy-MM-dd HH:mm:ss", null);
-
+                "yyyy-MM-d H:m:s", null);
         mesRohIn.LastupdateBy = rohIn.FModifierId;
-
         if (rohIn.FModifyDate != null)
             mesRohIn.LastupdateDate = DateTime.ParseExact(rohIn.FModifyDate,
-                "yyyy-MM-dd HH:mm:ss", null);
+                "yyyy-MM-d H:m:s", null);
+        mesRohIn.Prearrivaldate = rohIn.Prearrivaldate != null
+            ? DateTime.ParseExact(rohIn.Prearrivaldate,
+                "yyyy-MM-d H:m:s", null)
+            : null;*/
+        if (!rohIn.FCancelDate.IsNullOrEmpty() && !mesRohIn.CancellationPerson.IsNullOrEmpty())
+        {
+            if (!DateTime.TryParseExact(rohIn.FCancelDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                    DateTimeStyles.None, out DateTime cancelDate))
+            {
+                throw new FormatException($"鍙栨秷鏃ユ湡锛團CancelDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FCancelDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+            }
+
+            mesRohIn.CancellationDate = cancelDate;
+        }
+        else
+        {
+            mesRohIn.CancellationDate = null;
+        }
+
+        // 3. 澶勭悊 fCreateDate锛堝垱寤烘棩鏈燂級
+        if (!rohIn.FCreateDate.IsNullOrEmpty())
+        {
+            if (!DateTime.TryParseExact(rohIn.FCreateDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                    DateTimeStyles.None, out DateTime createDate))
+            {
+                throw new FormatException($"鍒涘缓鏃ユ湡锛團CreateDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FCreateDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+            }
+
+            mesRohIn.CreateDate = createDate;
+        }
+        else
+        {
+            mesRohIn.CreateDate = null;
+        }
+
+        // 4. 澶勭悊 fModifyDate锛堜慨鏀规棩鏈燂級
+        if (!rohIn.FModifyDate.IsNullOrEmpty())
+        {
+            if (!DateTime.TryParseExact(rohIn.FModifyDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                    DateTimeStyles.None, out DateTime modifyDate))
+            {
+                throw new FormatException($"淇敼鏃ユ湡锛團ModifyDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FModifyDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+            }
+
+            mesRohIn.LastupdateDate = modifyDate;
+        }
+        else
+        {
+            mesRohIn.LastupdateDate = null;
+        }
+
+
+        // 6. 澶勭悊 prearrivaldate锛堥璁″埌璐ф棩鏈燂級
+        if (!rohIn.Prearrivaldate.IsNullOrEmpty())
+        {
+            if (!DateTime.TryParseExact(rohIn.Prearrivaldate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                    DateTimeStyles.None, out DateTime preArrivalDate))
+            {
+                throw new FormatException(
+                    $"棰勮鍒拌揣鏃ユ湡锛圥rearrivaldate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.Prearrivaldate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+            }
+
+            mesRohIn.Prearrivaldate = preArrivalDate;
+        }
+        else
+        {
+            mesRohIn.Prearrivaldate = null;
+        }
 
         mesRohIn.ErpCheckBy = rohIn.FApproverId;
         mesRohIn.ErpCheckDate = rohIn.FApproveDate;
         mesRohIn.Changereason = rohIn.FChangeReason;
-        mesRohIn.Prearrivaldate = rohIn.Prearrivaldate != null
-            ? DateTime.ParseExact(rohIn.Prearrivaldate,
-                "yyyy-MM-dd HH:mm:ss", null)
-            : null;
 
         mesRohIn.ReceiveOrgId = rohIn.FReceiveOrgId;
         mesRohIn.ProviderId = rohIn.FProviderId;
-
         mesRohIn.Anred = rohIn.FTContact;
         mesRohIn.Telf1 = rohIn.Fmobilephone;
         mesRohIn.FixedTelephone = rohIn.FixedTelephone;
@@ -174,17 +245,45 @@
                 InventoryUnit = s.FStockUnitID,
                 PricingUnit = s.FPriceUnitId,
                 PricingQty = Convert.ToDecimal(s.FPriceUnitQty),
+                /*
                 DeliveryDate = s.FDeliveryDate != null
                     ? DateTime.ParseExact(s.FDeliveryDate,
-                        "yyyy-MM-dd HH:mm:ss", null)
+                        "yyyy-MM-d H:m:s", null)
                     : null,
                 EarliestDeliveryDate = s.FDeliveryEarlyDate != null
                     ? DateTime.ParseExact(s.FDeliveryEarlyDate,
-                        "yyyy-MM-dd HH:mm:ss", null)
+                        "yyyy-MM-d H:m:s", null)
                     : null,
                 LatestDeliveryDate = s.FDeliveryLastDate != null
                     ? DateTime.ParseExact(s.FDeliveryLastDate,
-                        "yyyy-MM-dd HH:mm:ss", null)
+                        "yyyy-MM-d H:m:s", null)
+                    : null,
+                    */
+                // 1. 澶勭悊 fDeliveryDate锛堜氦璐ф棩鏈燂級
+                DeliveryDate = !s.FDeliveryDate.IsNullOrEmpty()
+                    ? (DateTime.TryParseExact(s.FDeliveryDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                        DateTimeStyles.None, out DateTime deliveryDate)
+                        ? deliveryDate
+                        : throw new FormatException(
+                            $"浜よ揣鏃ユ湡锛團DeliveryDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FDeliveryDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"))
+                    : null,
+
+                // 2. 澶勭悊 fDeliveryEarlyDate锛堟渶鏃╀氦璐ф棩鏈燂級
+                EarliestDeliveryDate = !s.FDeliveryEarlyDate.IsNullOrEmpty()
+                    ? (DateTime.TryParseExact(s.FDeliveryEarlyDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                        DateTimeStyles.None, out DateTime earlyDate)
+                        ? earlyDate
+                        : throw new FormatException(
+                            $"鏈�鏃╀氦璐ф棩鏈燂紙FDeliveryEarlyDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FDeliveryEarlyDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"))
+                    : null,
+
+                // 3. 澶勭悊 fDeliveryLastDate锛堟渶鏅氫氦璐ф棩鏈燂級
+                LatestDeliveryDate = !s.FDeliveryLastDate.IsNullOrEmpty()
+                    ? (DateTime.TryParseExact(s.FDeliveryLastDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                        DateTimeStyles.None, out DateTime lastDate)
+                        ? lastDate
+                        : throw new FormatException(
+                            $"鏈�鏅氫氦璐ф棩鏈燂紙FDeliveryLastDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FDeliveryLastDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"))
                     : null,
                 IsGift = s.FGiveAway,
                 Remarks = s.FEntryNote,
@@ -195,21 +294,8 @@
                 BusinessClose = s.FMRPCloseStatus,
                 BusinessFreeze = s.FMRPFreezeStatus,
                 Freezer = s.FFreezerId,
-                //FreezeTime = !string.IsNullOrEmpty(s.FFreezeDate)
-                //            && DateTime.TryParseExact(s.FFreezeDate,
-                //                new[] { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd" },  // 鏀寔澶氱鏍煎紡
-                //                CultureInfo.InvariantCulture,
-                //                DateTimeStyles.None,
-                //                out var parsedDate)
-                //            && parsedDate > new DateTime(1900, 1, 1)
-                //                ? parsedDate
-                //                : (DateTime?)null,
                 BusinessTerminate = s.FMRPTerminateStatus,
                 Terminator = s.FTerminaterId,
-                //TerminateTime = s.FTerminateDate != null
-                //    ? DateTime.ParseExact(s.FTerminateDate,
-                //        "yyyy-MM-dd HH:mm:ss", null)
-                //    : null,
                 TotalReceivedQty = Convert.ToDecimal(s.FReceiveQty), //绱鏀舵枡鏁�
                 RemainingReceivedQty =
                     Convert.ToDecimal(s.FRemainReceiveQty),
@@ -237,20 +323,52 @@
                 DemandDepartment = s.FRequireDeptId,
                 ReceivingDepartment = s.FReceiveDeptId,
                 SalesOrderId = s.SalesOrderId,
-                OrderLineId = s.OrderLineId
+                OrderLineId = s.OrderLineId,
+                FSUBREQENTRYID = s.FSUBREQENTRYID
             };
 
-            if (s.FFreezeDate != null)
+            /*if (s.FFreezeDate != null)
                 if (!s.FFreezerId.IsNullOrEmpty())
                     entity.FreezeTime =
                         DateTime.ParseExact(s.FFreezeDate,
-                            "yyyy-MM-dd HH:mm:ss", null);
+                            "yyyy-MM-d H:m:s", null);
 
             if (s.FTerminateDate != null)
                 if (!s.FTerminaterId.IsNullOrEmpty())
                     entity.TerminateTime =
                         DateTime.ParseExact(s.FTerminateDate,
-                            "yyyy-MM-dd HH:mm:ss", null);
+                            "yyyy-MM-d H:m:s", null);*/
+// 4. 澶勭悊 fFreezeDate锛堝喕缁撴棩鏈燂級
+            if (!s.FFreezeDate.IsNullOrEmpty() && !s.FFreezerId.IsNullOrEmpty())
+            {
+                if (!DateTime.TryParseExact(s.FFreezeDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                        DateTimeStyles.None, out DateTime freezeTime))
+                {
+                    throw new FormatException($"鍐荤粨鏃ユ湡锛團FreezeDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FFreezeDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+                }
+
+                entity.FreezeTime = freezeTime;
+            }
+            else
+            {
+                entity.FreezeTime = null;
+            }
+
+            // 5. 澶勭悊 fTerminateDate锛堢粓姝㈡棩鏈燂級
+            if (!s.FTerminateDate.IsNullOrEmpty() && !s.FTerminaterId.IsNullOrEmpty())
+            {
+                if (!DateTime.TryParseExact(s.FTerminateDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture,
+                        DateTimeStyles.None, out DateTime terminateTime))
+                {
+                    throw new FormatException($"缁堟鏃ユ湡锛團TerminateDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FTerminateDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s");
+                }
+
+                entity.TerminateTime = terminateTime;
+            }
+            else
+            {
+                entity.TerminateTime = null;
+            }
 
             var single = rohInDataManager.GetSingle(it =>
                 it.EbelnK3id == entity.EbelnK3id);

--
Gitblit v1.9.3