From a4ae3bf5f1826e8e29a95da3dc2c947d713d4ebb Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 06 六月 2025 15:38:14 +0800
Subject: [PATCH] 1.仓库信息储存逻辑调整 2.生产订单接口优化。

---
 MES.Service/service/BasicData/MesRohInManager.cs |  194 ++++++++++++++++++++++--------------------------
 1 files changed, 88 insertions(+), 106 deletions(-)

diff --git a/MES.Service/service/BasicData/MesRohInManager.cs b/MES.Service/service/BasicData/MesRohInManager.cs
index c6a5935..fd0edbc 100644
--- a/MES.Service/service/BasicData/MesRohInManager.cs
+++ b/MES.Service/service/BasicData/MesRohInManager.cs
@@ -1,7 +1,9 @@
-锘縰sing MES.Service.DB;
+锘縰sing Masuit.Tools;
+using MES.Service.DB;
 using MES.Service.Dto.webApi;
 using MES.Service.Modes;
 using SqlSugar;
+using System.Globalization;
 
 namespace MES.Service.service.BasicData;
 
@@ -14,77 +16,38 @@
     {
         var rohInErpRohIn = rohIn.ErpRohIn;
         var mesRohIn = GetMesRohIn(rohInErpRohIn);
-        var mesRohInDatas = GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type);
+        var mesRohInDatas =
+            GetMesRohInDatas(rohIn.ErpRohinDatas);
 
         return UseTransaction(db =>
         {
-            switch (rohInErpRohIn.Type)
+            return rohInErpRohIn.Type switch
             {
-                case "2":
-                case "4":
-                case "5":
-                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
-                case "3":
-                    return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
-                default:
-                    throw new NotImplementedException(
-                        $"type娌℃湁{rohInErpRohIn.Type}杩欎釜绫诲瀷");
-            }
+                "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn,
+                    mesRohInDatas)
+                    ? 1
+                    : 0,
+                "3" => UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
+                _ => throw new NotImplementedException(
+                    $"type娌℃湁{rohInErpRohIn.Type}杩欎釜绫诲瀷")
+            };
         }) > 0;
     }
 
-    // 鎻掑叆鏁版嵁鐨勬柟娉�
-    private bool InsertData(SqlSugarScope db, MesRohIn mesRohIn,
-        List<MesRohInData> mesRohInDatas, string FBILLTYPE)
-    {
-        switch (FBILLTYPE)
-        {
-            case "A":
-            {
-                var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
-
-                if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
-
-                if (decimals.Length > 0)
-                    db.Deleteable<MesRohInData>().In(decimals).ExecuteCommand();
-
-                var insert = base.Insert(mesRohIn);
-                var insertRange =
-                    rohInDataManager.InsertRange(mesRohInDatas);
-
-                if (insert && insertRange) return true;
-                throw new NotImplementedException("鎻掑叆澶辫触");
-            }
-            case "B":
-            {
-                var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
-                if (base.DeleteById(mesRohIn.Id) && db
-                        .Deleteable<MesRohInData>().In(decimals)
-                        .ExecuteCommand() > 0)
-                {
-                    var insert = base.Insert(mesRohIn);
-                    var insertRange =
-                        rohInDataManager.InsertRange(mesRohInDatas);
-
-                    if (insert && insertRange) return true;
-                    throw new NotImplementedException("鎻掑叆澶辫触");
-                }
-
-                break;
-            }
-        }
-
-        throw new NotImplementedException("閲囪喘璁㈠崟绫诲瀷閿欒");
-    }
 
     // 鏇存柊鏁版嵁鐨勬柟娉�
     private bool UpdateData(SqlSugarScope db, MesRohIn mesRohIn,
         List<MesRohInData> mesRohInDatas)
     {
-        var decimals = mesRohInDatas.Select(s => s.Id).ToArray();
-        var update = base.DeleteById(mesRohIn.Id);
+        var decimals = mesRohInDatas.Select(s => s.Guid).ToArray();
+
+        var update = db.Deleteable<MesRohIn>()
+            .Where(a => a.Guid == mesRohIn.Guid)
+            .ExecuteCommand() > 0;
+
         var insertOrUpdate = db
-            .Deleteable<MesRohInData>().In(decimals)
+            .Deleteable<MesRohInData>()
+            .Where(s => decimals.Contains(s.Guid))
             .ExecuteCommand() > 0;
 
         if (update && insertOrUpdate) return true;
@@ -95,14 +58,22 @@
     private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,
         List<MesRohInData> mesRohInDatas)
     {
-        if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
+        if (mesRohIn.Guid != null)
+            db.Deleteable<MesRohIn>().Where(s => s.Guid == mesRohIn.Guid)
+                .ExecuteCommand();
 
         if (mesRohInDatas.Count > 0)
             db.Deleteable<MesRohInData>()
                 .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
 
-        var orUpdate = base.Insert(mesRohIn);
-        var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas);
+        var orUpdate = db.Insertable(mesRohIn)
+            .IgnoreColumns(true).ExecuteCommand() > 0;
+
+
+        var baOrUpdate = db.Insertable(mesRohInDatas).PageSize(1)
+            .IgnoreColumnsNull()
+            .ExecuteCommand() > 0;
+
         if (orUpdate && baOrUpdate) return true;
         throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
     }
@@ -115,13 +86,14 @@
     }
 
     // 灏� ErpRohIn 瀵硅薄杞崲涓� MesRohIn 瀵硅薄鐨勬柟娉�
-    public MesRohIn GetMesRohIn(ErpRohIn rohIn)
+    private MesRohIn GetMesRohIn(ErpRohIn rohIn)
     {
-        var eid = Convert.ToDecimal(rohIn.id);
+        var eid = long.Parse(rohIn.id);
         var mesRohIn = new MesRohIn();
 
+
         var single = base.GetSingle(it => it.EbelnK3id == eid);
-        if (single != null) mesRohIn.Id = single.Id;
+        if (single != null) mesRohIn.Guid = single.Guid;
 
         mesRohIn.EbelnK3id = eid;
         mesRohIn.BillNo = rohIn.FBillNo;
@@ -138,22 +110,19 @@
         mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
         mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
         mesRohIn.PurchaseGroup = rohIn.FPurchaserGroupId;
-        mesRohIn.QtyAcceptance = rohIn.Facctype;
         mesRohIn.Purchaser = rohIn.FPurchaserId;
-        //mesRohIn.QualityReq = rohIn.F_UNW_Remarks_zlyq;
         mesRohIn.SettlementParty = rohIn.FSettleId;
         mesRohIn.PaymentParty = rohIn.FChargeId;
-        // mesRohIn.Email = rohIn.FProviderEMail;
-        //  mesRohIn.TransportMethod = rohIn.F_UNW_Text_ysfs;
-        mesRohIn.Remarks = rohIn.F_XIFG_Text_qtr1;
-        //  mesRohIn.FixtureMoldProcurement = rohIn.F_UNW_Combo_zjmj;
+        mesRohIn.Email = rohIn.FProviderEMail;
+        mesRohIn.Remarks = rohIn.Remarks;
         mesRohIn.CancellationStatus = rohIn.FCancelStatus;
         mesRohIn.CancellationPerson = rohIn.FCancellerId;
 
         if (rohIn.FCancelDate != null)
-            mesRohIn.CancellationDate =
-                DateTime.ParseExact(rohIn.FCancelDate,
-                    "yyyy-MM-dd HH:mm:ss", null);
+            if (!mesRohIn.CancellationPerson.IsNullOrEmpty())
+                mesRohIn.CancellationDate =
+                    DateTime.ParseExact(rohIn.FCancelDate,
+                        "yyyy-MM-dd HH:mm:ss", null);
 
         mesRohIn.CreateBy = rohIn.FCreatorId;
 
@@ -169,22 +138,28 @@
 
         mesRohIn.ErpCheckBy = rohIn.FApproverId;
         mesRohIn.ErpCheckDate = rohIn.FApproveDate;
-        mesRohIn.Changereason = rohIn.FCHANGEREASON;
-        mesRohIn.FPREARRIVALDATE = rohIn.FPREARRIVALDATE != null
-            ? DateTime.ParseExact(rohIn.FPREARRIVALDATE,
+        mesRohIn.Changereason = rohIn.FChangeReason;
+        mesRohIn.Prearrivaldate = rohIn.Prearrivaldate != null
+            ? DateTime.ParseExact(rohIn.Prearrivaldate,
                 "yyyy-MM-dd HH:mm:ss", null)
             : null;
 
-        mesRohIn.FRECEIVEORGID = rohIn.FRECEIVEORGID;
+        mesRohIn.ReceiveOrgId = rohIn.FReceiveOrgId;
+        mesRohIn.ProviderId = rohIn.FProviderId;
 
-        mesRohIn.remark1 = rohIn.F_XIFG_PrintTimes_qtr;
+        mesRohIn.Anred = rohIn.FTContact;
+        mesRohIn.Telf1 = rohIn.Fmobilephone;
+        mesRohIn.FixedTelephone = rohIn.FixedTelephone;
+        mesRohIn.Address = rohIn.Address;
+        mesRohIn.Acctype = rohIn.Acctype;
+        mesRohIn.SynchronousDate = DateTime.Now;
 
         return mesRohIn;
     }
 
     // 灏� ErpRohinData 瀵硅薄杞崲涓� MesRohInData 瀵硅薄鐨勬柟娉�
-    public List<MesRohInData> GetMesRohInDatas(
-        List<ErpRohinData> erpRohinDatas, string type)
+    private List<MesRohInData> GetMesRohInDatas(
+        List<ErpRohinData> erpRohinDatas)
     {
         return erpRohinDatas.Select(s =>
         {
@@ -193,12 +168,12 @@
                 EbelnK3id = Convert.ToDecimal(s.id),
                 ErpId = Convert.ToDecimal(s.Eid),
                 BillNo = s.FBillNo,
-                SalesOrderId = s.F_XIFG_Text_k79,
-                OrderLineId = s.FSEQ,
                 ItemId = s.FMaterialId,
                 PurchaseUnit = s.FUnitId,
                 PurchaseQty = Convert.ToDecimal(s.FQty),
                 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)
@@ -212,7 +187,7 @@
                         "yyyy-MM-dd HH:mm:ss", null)
                     : null,
                 IsGift = s.FGiveAway,
-                Remarks = s.Fnote,
+                Remarks = s.FEntryNote,
                 SupplierItemCode = s.FSupMatId,
                 SupplierItemName = s.FSupMatName,
                 OutsourcingOrderId = s.FSUBREQBILLNO,
@@ -220,23 +195,29 @@
                 BusinessClose = s.FMRPCloseStatus,
                 BusinessFreeze = s.FMRPFreezeStatus,
                 Freezer = s.FFreezerId,
-                FreezeTime = s.FFreezeDate != null
-                    ? DateTime.ParseExact(s.FFreezeDate,
-                        "yyyy-MM-dd HH:mm:ss", null)
-                    : null,
+                //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,
+                //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),
                 TotalStoredQty = Convert.ToDecimal(s.FStockInQty), //绱鍏ュ簱鏁�
                 RemainingStoredQty = Convert.ToDecimal(s.FRemainStockINQty),
                 TotalReturnedQty = Convert.ToDecimal(s.FMrbQty),
-                ReturnableReceivedQty = Convert.ToDecimal(s.FCHECKRETQTY), //鏀舵枡鍙��鏁�
+                ReturnableReceivedQty =
+                    Convert.ToDecimal(s.FCHECKRETQTY), //鏀舵枡鍙��鏁�
                 ReturnableStoredQty = Convert.ToDecimal(s.FSTOCKRETQTY), //搴撳瓨鍙��鏁�
                 SourceDocumentType = s.FSrcBillTypeId,
                 SourceDocumentId = s.FSrcBillNo,
@@ -254,23 +235,24 @@
                 Receiving = s.FReceiveOrgId,
                 Settlement = s.FSETTLEORGID,
                 DemandDepartment = s.FRequireDeptId,
-                ReceivingDepartment = s.FReceiveDeptId,
-                FPREARRIVALDATE = s.FPREARRIVALDATE != null
-                    ? DateTime.ParseExact(s.FPREARRIVALDATE,
-                        "yyyy-MM-dd HH:mm:ss", null)
-                    : null,
-                Remark1 = s.F_XIFG_Text_ne1,
-                Remark2 = s.F_XIFG_Text_6oq,
-                Remark3 = s.F_XIFG_Base_c1c,
-                Remark4 = s.F_XIFG_Text_qtr4,
-                FdemandbillnoLine = s.FdemandbillnoLine,
-                ElectricalProductModel = s.ElectricalProductModel,
-                ElectricalProductName = s.ElectricalProductName
+                ReceivingDepartment = s.FReceiveDeptId
             };
+
+            if (s.FFreezeDate != null)
+                if (!s.FFreezerId.IsNullOrEmpty())
+                    entity.FreezeTime =
+                        DateTime.ParseExact(s.FFreezeDate,
+                            "yyyy-MM-dd HH:mm:ss", null);
+
+            if (s.FTerminateDate != null)
+                if (!s.FTerminaterId.IsNullOrEmpty())
+                    entity.TerminateTime =
+                        DateTime.ParseExact(s.FTerminateDate,
+                            "yyyy-MM-dd HH:mm:ss", null);
 
             var single = rohInDataManager.GetSingle(it =>
                 it.EbelnK3id == entity.EbelnK3id);
-            if (single != null) entity.Id = single.Id;
+            if (single != null) entity.Guid = single.Guid;
 
             return entity;
         }).ToList();

--
Gitblit v1.9.3