From 146545654c8128b52f1ba396cb84b82456115062 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期一, 13 十月 2025 16:04:05 +0800
Subject: [PATCH] 1.委外接口接收优化

---
 MES.Service/service/BasicData/ProductionOrderManager.cs |   67 ++++++++++++++++++++++++++++-----
 1 files changed, 56 insertions(+), 11 deletions(-)

diff --git a/MES.Service/service/BasicData/ProductionOrderManager.cs b/MES.Service/service/BasicData/ProductionOrderManager.cs
index ccd6353..412bbf0 100644
--- a/MES.Service/service/BasicData/ProductionOrderManager.cs
+++ b/MES.Service/service/BasicData/ProductionOrderManager.cs
@@ -14,12 +14,14 @@
     private readonly ProductionOrderSubManager _productionOrderSubManager =
         new();
 
+    private string ORDERNO = "";
+
 
     //ErpWYOrder
     public bool Save(ErpWYOrder wyOrder)
     {
         var erpProductionOrderDto = wyOrder.OrderDto;
-        var mesRohIn = ConvertErpToProductionOrder(erpProductionOrderDto);
+        var mesRohIn = ConvertErpToProductionOrder(erpProductionOrderDto, wyOrder.Items[0].FBILLNO);
         var mesRohInDatas =
             ConvertErpToProductionOrderSub(wyOrder.Items);
 
@@ -33,7 +35,11 @@
                 //         ? 1
                 //         : 0;
                 case "3":
-                    return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;
+                    //return UpdateData(db, mesRohIn, mesRohInDatas) ? 1 : 0;//鏀逛负涓嶅垹闄�
+                    return SaveOrUpdateData(db, mesRohIn, mesRohInDatas,
+                        erpProductionOrderDto.Type)
+                        ? 1
+                        : 0;
                 case "2":
                 case "4":
                     return SaveOrUpdateData(db, mesRohIn, mesRohInDatas,
@@ -68,6 +74,12 @@
     private bool SaveOrUpdateData(SqlSugarScope db, ProductionOrder mesRohIn,
         List<ProductionOrderSub> mesRohInDatas, string type)
     {
+        if(type == "3" || (mesRohIn.DocumentStatus != null && mesRohIn.DocumentStatus != "C"))
+        {
+            mesRohIn.Typea = "3";  // 鏂板瀛楁璧嬪��
+            mesRohIn.OrderNo = mesRohIn.OrderNo + "F" + mesRohIn.ErpProductionEntryCode;
+        }
+
         if (StringUtil.CheckGuid(mesRohIn.Guid))
             db.Deleteable<ProductionOrder>()
                 .Where(s => s.Guid == mesRohIn.Guid)
@@ -75,10 +87,16 @@
 
         if (mesRohInDatas.Count > 0)
             db.Deleteable<ProductionOrderSub>()
-                .Where(s => s.ErpHeaderId == mesRohIn.ErpId).ExecuteCommand();
+                .Where(s => s.ErpProductionEntryCode == mesRohIn.ErpProductionEntryCode).ExecuteCommand();
 
-        var orUpdate = base.Insert(mesRohIn);
-        var baOrUpdate = _productionOrderSubManager.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("鎻掑叆鎴栨洿鏂板け璐�");
@@ -92,7 +110,7 @@
     }
 
     private ProductionOrder ConvertErpToProductionOrder(
-        ErpProductionOrderDto erpDto)
+        ErpProductionOrderDto erpDto,string SUBBOM)
     {
         DateTime parsedDate;
 
@@ -110,7 +128,7 @@
 
         var productionOrder = new ProductionOrder
         {
-            OrderNo = erpDto.FBillNo,
+            OrderNo = SUBBOM,
             Warehouse = erpDto.FStockID,
             OrderDate = ParseDateTime(erpDto.FDate) ?? null,
             OrderType = erpDto.FBillType,
@@ -142,17 +160,32 @@
             ClosingPerson = erpDto.FFORCECLOSERID,
             ClosingType = erpDto.FCloseType,
             Remarks = erpDto.FDescription,
-            ErpId = erpDto.FPPOMID,
+            ErpId = erpDto.FID,
             ErpProductionEntryCode = erpDto.FSUBENTRYID,
             Purchaseorderno = erpDto.FPurOrderNo,
             Purchaseorderentryseq = Convert.ToInt32(erpDto.FPurOrderEntrySeq),
             Stockinqty = Convert.ToDecimal(erpDto.FBaseStockInQty),
             Nostockinqty = Convert.ToDecimal(erpDto.FBaseNoStockInQty),
-            Stockowner = erpDto.FInStockOwnerId
+            Stockowner = erpDto.FInStockOwnerId,
+            PlanConfirmation = erpDto.PlanConfirmation != null
+                ? DateTime.ParseExact(erpDto.PlanConfirmation,
+                    "yyyy-MM-dd HH:mm:ss", null)
+                : null,
+            ReqSrc = erpDto.FReqSrc,
+            SrcSplitSeq = erpDto.SrcSplitSeq,
+            Typea = erpDto.TypeA,
+            DocumentStatus = erpDto.FDocumentStatus
+
         };
 
-        var single = base.GetSingle(it => it.ErpId == erpDto.FPPOMID);
-        if (single != null) productionOrder.Guid = single.Guid;
+        var single = base.GetSingle(it => it.ErpProductionEntryCode == erpDto.FSUBENTRYID);
+        if (single != null)
+        {
+            productionOrder.Guid = single.Guid;
+            productionOrder.AuditDate = single.AuditDate;
+            productionOrder.AuditStatus = single.AuditStatus;
+            productionOrder.Auditor = single.Auditor;
+        }
 
         return productionOrder;
     }
@@ -190,6 +223,18 @@
                 ItemNo = erpDto.FReplaceGroup,
                 OwnerType = erpDto.FOwnerTypeId,
                 Owner = erpDto.FOwnerID2,
+                Fisgetscrap = erpDto.FISGETSCRAP,
+                Fiskeycomponent = erpDto.FISKEYCOMPONENT,
+                Fsrctransorgid = erpDto.FSRCTRANSORGID,
+                Fsrctransstockid = erpDto.FSRCTRANSSTOCKID,
+                Fstockstatusid = erpDto.FSTOCKSTATUSID,
+                Fneeddate = erpDto.FNEEDDATE != null
+                    ? DateTime.ParseExact(erpDto.FNEEDDATE,
+                        "yyyy-MM-dd HH:mm:ss", null)
+                    : null,
+                Freservetype = erpDto.FRESERVETYPE,
+                Fmemo = erpDto.FMEMO,
+                Typeb = erpDto.TypeB,
                 ErpProductionEntryCode = erpDto.FSUBENTRYID
             };
 

--
Gitblit v1.9.3