From 5de35354e8dfcb4933350d0d1b645d400bcf23ab Mon Sep 17 00:00:00 2001
From: sjz <1240968267@qq.com>
Date: 星期二, 22 七月 2025 15:30:09 +0800
Subject: [PATCH] 优化多组织

---
 MES.Service/service/WomcaaManager.cs |  185 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 141 insertions(+), 44 deletions(-)

diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs
index 1e2727b..5c0616d 100644
--- a/MES.Service/service/WomcaaManager.cs
+++ b/MES.Service/service/WomcaaManager.cs
@@ -22,20 +22,23 @@
     public bool Save(ErpWOM wom)
     {
         var womErpCaa = wom.ErpCaa;
-        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
-        var mesWomcabs =MapErpCABtoWomcab(wom.ErpCabs);
+        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa, wom.ErpCabs[0].FXSHTBH,
+            wom.ErpCabs[0].F_ZJXF_HSDJ);
+        var mesWomcabs =
+            MapErpCABtoWomcab(wom.ErpCabs);
+
         return UseTransaction(db =>
         {
             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}杩欎釜绫诲瀷");
@@ -43,58 +46,134 @@
         }) > 0;
     }
 
-    private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
+    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();
+            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,
+    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();
+
+        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 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)
     {
+        var jabs = "0";
+
         var entity = new Womcaa
         {
             Erpid = Convert.ToDecimal(dto.Id),
             Caa001 = dto.FBillNo,
-            Caa021 = dto.FWorkShopID,
-            DepotCode = dto.FStockId,
-            CreateDate = dto.FDate,
             Caa004 = dto.FBillType,
-            Caa023 = dto.FStatus,
+            Caa005 = dto.FConveyDate,
             Caa006 = dto.FMaterialId,
             Caa009 = dto.FUnitId,
-            Caa012 = !string.IsNullOrEmpty(dto.FQty)
-                ? Convert.ToDecimal(dto.FQty)
-                : null,
-            WorkGroupId = dto.FWorkGroupId,
-            PlanId = dto.FPlannerID,
             Caa010 = dto.FPlanStartDate,
             Caa011 = dto.FPlanFinishDate,
-            Caa005 = dto.FConveyDate,
+            Caa012 = Convert.ToDecimal(dto.FQty),
+            Caa013 = dto.FBomId,
+            Caa015 = fxshtbh,
+            Caa015Head = dto.FSaleOrderEntrySeq,
+            Caa016 = dto.FDescription,
+            Caa017 = 0,
+            Caa018 = Convert.ToDecimal(dto.PLAN_ID),
+            Caa019 = dto.PLAN_SEQ,
+            Caa020 = dto.PLAN_NUM,
+            Caa021 = dto.FWorkShopID,
+            Fstatus = 0,
+            Caa022 = Convert.ToDecimal(dto.FQty),
+            Caa023 = dto.FStatus,
+            Caa024 = 0,
+            RoutingId = dto.FRoutingId,
+            WorkShopId = dto.FREMWorkShopId,
+            DepotCode = dto.FStockId,
+            CreateDate = dto.FDate,
+            WorkGroupId = dto.FWorkGroupId,
+            PlanId = dto.FPlannerID,
             StockInlimith = dto.FStockInLimitH,
             StockInlimitl = dto.FStockInLimitL,
             Mtono = dto.FMTONO,
             Lot = dto.FLot,
-            Caa013 = dto.FBomId,
             CreateType = dto.FCreateType,
             SrcBillType = dto.FSrcBillType,
             SrcBillNo = dto.FSrcBillNo,
@@ -104,11 +183,27 @@
             ForceCloserid = dto.FForceCloserId,
             CloseType = dto.FCloseType,
             SrcSplitBillno = dto.FSrcSplitBillNo,
-            Caa016 = dto.FDESCRIPTION,
-            Caa018 = Convert.ToDecimal(dto.PLAN_ID),
-            Caa019 = Convert.ToDecimal(dto.PLAN_SEQ),
-            Caa020 = dto.PLAN_NUM
+            F_ZSXG_KH = dto.F_ZSXG_KH,
+            F_ZJXF_YHRQ = dto.F_ZJXF_YHRQ,
+            PrdOrg = dto.erP_SCZZ,
+            TrustOrg = dto.erP_WTZZ,
+            TbTime = DateTime.Now,
+            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")
+        {
+            entity.JaBs = "1";
+            entity.JaTime = DateTime.Now;
+        }
 
         var single = base.GetSingle(it => it.Erpid == entity.Erpid);
         if (single != null) entity.Id = single.Id;
@@ -128,27 +223,29 @@
                 Cab001 = dto.FBillNo,
                 Cab002 = dto.FSeq,
                 Cab003 = dto.FMaterialID,
-                Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
-                    ? Convert.ToDecimal(dto.FNeedQty)
-                    : null,
-                Cab007 = !string.IsNullOrEmpty(dto.FPickedQty)
-                    ? Convert.ToDecimal(dto.FPickedQty)
-                    : null,
+                Cab006 = Convert.ToDecimal(dto.FNeedQty),
+                Cab007 = Convert.ToDecimal(dto.FPickedQty),
+                Cab009 = dto.FUnitID,
+                Cab012 = Convert.ToDecimal(dto.FStdQty),
+                Cab014 = dto.FIsKeyItem,
+                Pid = Convert.ToDecimal(dto.FID),
+                Eid = Convert.ToDecimal(dto.FID),
                 PositionNo = dto.FPositionNO,
+                IssuingOrganization = dto.FSupplyOrg,
+                SupplyOrganization = dto.FChildSupplyOrgId,
                 OwnerId = dto.FOwnerID,
                 Mtono = dto.FMTONO,
                 Lot = dto.FLot,
                 DepotCode = dto.FStockID,
                 IssueType = dto.FIssueType,
-                Cab009 = dto.FUnitID,
                 SupplyType = dto.FSupplyType,
-                Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
-                    ? Convert.ToDecimal(dto.FStdQty)
-                    : null,
-                Cab014 = dto.FIsKeyItem,
-                Numerator = dto.FNumerator,
-                Denominator = dto.FDenominator,
-                Eid = Convert.ToDecimal(dto.FID)
+                Numerator = Convert.ToDecimal(dto.FNumerator),
+                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,
+                ProcNo = dto.F_ZJXF_SSGX
             };
 
             var entity = Db.Queryable<Womcab>()

--
Gitblit v1.9.3