From 302054e253f1550ee64430882786ec9a3920ec92 Mon Sep 17 00:00:00 2001
From: sjz <1240968267@qq.com>
Date: 星期六, 19 七月 2025 08:33:44 +0800
Subject: [PATCH] 优化多组织代码

---
 MES.Service/service/WomcaaManager.cs |  117 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 91 insertions(+), 26 deletions(-)

diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs
index 7b09e4b..5c0616d 100644
--- a/MES.Service/service/WomcaaManager.cs
+++ b/MES.Service/service/WomcaaManager.cs
@@ -1,9 +1,7 @@
-锘縰sing Dm;
-using MES.Service.DB;
+锘縰sing MES.Service.DB;
 using MES.Service.Dto.webApi;
 using MES.Service.Modes;
 using SqlSugar;
-using System.Net.NetworkInformation;
 
 namespace MES.Service.service;
 
@@ -24,7 +22,8 @@
     public bool Save(ErpWOM wom)
     {
         var womErpCaa = wom.ErpCaa;
-        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
+        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa, wom.ErpCabs[0].FXSHTBH,
+            wom.ErpCabs[0].F_ZJXF_HSDJ);
         var mesWomcabs =
             MapErpCABtoWomcab(wom.ErpCabs);
 
@@ -33,14 +32,13 @@
             switch (womErpCaa.Type)
             {
                 case "3":
-                    return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
+                    return DeleteData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                 case "1":
                 case "2":
                 case "4":
+                    return SaveOrUpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                 case "5":
-                    return SaveOrUpdateData(db, mesWomcaa, mesWomcabs)
-                        ? 1
-                        : 0;
+                    return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0;
                 default:
                     throw new NotImplementedException(
                         $"type娌℃湁{womErpCaa.Type}杩欎釜绫诲瀷");
@@ -48,32 +46,99 @@
         }) > 0;
     }
 
-    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,List<Womcab> mesWomcabs)
+    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
+        List<Womcab> mesWomcabs)
+    {
+        if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
+        if (mesWomcabs.Count > 0)
+            db.Deleteable<Womcab>().Where(s => s.Eid == mesWomcaa.Erpid)
+                .ExecuteCommand();
+        var orUpdate = base.Insert(mesWomcaa);
+        var baOrUpdate = _womcabManager.InsertRange(mesWomcabs);
+        db.Ado.CommitTran();
+        if (orUpdate && baOrUpdate)
+        {
+            //瀹氫箟杈撳叆鍙傛暟
+            var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
+            // 瀹氫箟杈撳嚭鍙傛暟
+            var outParam1 = new SugarParameter("c_Result", null, true);
+            var outParam2 = new SugarParameter("C_MSG", null, true);
+            // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+            Db.Ado.ExecuteCommand(
+                "BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:c_Result,:C_MSG); END;",
+                inputParam1, outParam1, outParam2);
+            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+            var result = int.Parse((string)outParam1.Value);
+            var message = outParam2.Value == DBNull.Value
+                ? string.Empty
+                : (string)outParam2.Value;
+            if (result == 1)
+                //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊�
+                //db.Ado.RollbackTran();
+                throw new Exception(message);
+            // 鎻愪氦浜嬪姟
+            //db.Ado.CommitTran();
+            return true;
+        }
+
+        throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+    }
+
+    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
+        List<Womcab> mesWomcabs)
     {
         if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
 
         if (mesWomcabs.Count > 0)
-            db.Deleteable<Womcab>().Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
+            db.Deleteable<Womcab>().Where(s => s.Eid == mesWomcaa.Erpid)
+                .ExecuteCommand();
 
         var orUpdate = base.Insert(mesWomcaa);
         var baOrUpdate = _womcabManager.InsertRange(mesWomcabs);
-        if (orUpdate && baOrUpdate) return true;
+        db.Ado.CommitTran();
+        if (orUpdate && baOrUpdate)
+        {
+            //瀹氫箟杈撳叆鍙傛暟
+            var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
+            // 瀹氫箟杈撳嚭鍙傛暟
+            var outParam1 = new SugarParameter("c_Result", null, true);
+            var outParam2 = new SugarParameter("C_MSG", null, true);
+            // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+            Db.Ado.ExecuteCommand(
+                "BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:c_Result,:C_MSG); END;",
+                inputParam1, outParam1, outParam2);
+            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+            var result = int.Parse((string)outParam1.Value);
+            var message = outParam2.Value == DBNull.Value
+                ? string.Empty
+                : (string)outParam2.Value;
+            if (result == 1)
+                //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊�
+                //db.Ado.RollbackTran();
+                throw new Exception(message);
+            // 鎻愪氦浜嬪姟
+            //db.Ado.CommitTran();
+            return true;
+        }
+
         throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
     }
 
-    private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,List<Womcab> mesWomcabs)
+    private bool DeleteData(SqlSugarScope db, Womcaa mesWomcaa,
+        List<Womcab> mesWomcabs)
     {
         var decimals = mesWomcabs.Select(s => s.Id).ToArray();
         var update = base.DeleteById(mesWomcaa.Id);
-        var insertOrUpdate = db.Deleteable<Womcab>().In(decimals).ExecuteCommand() > 0;
+        var insertOrUpdate =
+            db.Deleteable<Womcab>().In(decimals).ExecuteCommand() > 0;
 
         if (update && insertOrUpdate) return true;
         throw new NotImplementedException("鏇存柊澶辫触");
     }
 
-    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto)
+    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto, string? fxshtbh, string? hsdj)
     {
-        string jabs="0";
+        var jabs = "0";
 
         var entity = new Womcaa
         {
@@ -87,7 +152,7 @@
             Caa011 = dto.FPlanFinishDate,
             Caa012 = Convert.ToDecimal(dto.FQty),
             Caa013 = dto.FBomId,
-            Caa015 = dto.FXSHTH,
+            Caa015 = fxshtbh,
             Caa015Head = dto.FSaleOrderEntrySeq,
             Caa016 = dto.FDescription,
             Caa017 = 0,
@@ -113,7 +178,7 @@
             SrcBillType = dto.FSrcBillType,
             SrcBillNo = dto.FSrcBillNo,
             SrcBillentryseq = dto.FSrcBillEntrySeq,
-            SaleOrderNo = dto.FXSHTH,
+            SaleOrderNo = dto.FSaleOrderNo,
             SaleOrderEntryseq = dto.FSaleOrderEntrySeq,
             ForceCloserid = dto.FForceCloserId,
             CloseType = dto.FCloseType,
@@ -123,17 +188,16 @@
             PrdOrg = dto.erP_SCZZ,
             TrustOrg = dto.erP_WTZZ,
             TbTime = DateTime.Now,
-            JaBs = "0"
+            JaBs = "0",
+            SupplierId = dto.SupplierId,
+            FinishedProduct = dto.FinishedProduct,
+            F_ZJXF_HSDJ = hsdj
         };
 
         if (dto.Type == "5")
-        {
             entity.IsXg = 1;
-        }
         else
-        {
             entity.IsXg = 0;
-        }
 
         if (dto.FStatus == "6" || dto.FStatus == "7")
         {
@@ -167,8 +231,8 @@
                 Pid = Convert.ToDecimal(dto.FID),
                 Eid = Convert.ToDecimal(dto.FID),
                 PositionNo = dto.FPositionNO,
-                IssuingOrganization=dto.FSupplyOrg,
-                SupplyOrganization=dto.FChildSupplyOrgId,
+                IssuingOrganization = dto.FSupplyOrg,
+                SupplyOrganization = dto.FChildSupplyOrgId,
                 OwnerId = dto.FOwnerID,
                 Mtono = dto.FMTONO,
                 Lot = dto.FLot,
@@ -179,8 +243,9 @@
                 Denominator = Convert.ToDecimal(dto.FDenominator),
                 SCRAPQTY = Convert.ToDecimal(dto.FFixScrapQty),
                 SCRAPRATE = Convert.ToDecimal(dto.FScrapRate),
-                SalesOrder=dto.FXSHTBH,
-                F_ZJXF_YHRQ=dto.F_ZJXF_YHRQ
+                SalesOrder = dto.FXSHTBH,
+                F_ZJXF_YHRQ = dto.F_ZJXF_YHRQ,
+                ProcNo = dto.F_ZJXF_SSGX
             };
 
             var entity = Db.Queryable<Womcab>()

--
Gitblit v1.9.3