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/WomcaaManager.cs |  206 +++++++++++++++++++++++++++++----------------------
 1 files changed, 116 insertions(+), 90 deletions(-)

diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs
index 56e8138..c5bc955 100644
--- a/MES.Service/service/WomcaaManager.cs
+++ b/MES.Service/service/WomcaaManager.cs
@@ -1,6 +1,7 @@
 锘縰sing MES.Service.DB;
 using MES.Service.Dto.webApi;
 using MES.Service.Modes;
+using MES.Service.util;
 using SqlSugar;
 
 namespace MES.Service.service;
@@ -22,7 +23,8 @@
     public bool Save(ErpWOM wom)
     {
         var womErpCaa = wom.ErpCaa;
-        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa);
+
+        var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa, wom.ErpCabs[0].FBillNo);
         var mesWomcabs =
             MapErpCABtoWomcab(wom.ErpCabs);
 
@@ -49,14 +51,23 @@
     private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa,
         List<Womcab> mesWomcabs)
     {
-        if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id);
+        if (StringUtil.CheckGuid(mesWomcaa.Guid))
+            base.DeleteById(mesWomcaa.Guid);
+
 
         if (mesWomcabs.Count > 0)
             db.Deleteable<Womcab>()
-                .Where(s => s.Eid == mesWomcaa.Erpid).ExecuteCommand();
+                .Where(s => s.Pid == mesWomcaa.Erpid).ExecuteCommand();
 
-        var orUpdate = base.Insert(mesWomcaa);
-        var baOrUpdate = _womcabManager.InsertRange(mesWomcabs);
+        //鍗曟潯鎻掑叆蹇界暐绌哄瓧娈�
+        var orUpdate = db.Insertable(mesWomcaa)
+            .IgnoreColumns(true).ExecuteCommand() > 0;
+
+        //鎵归噺鎻掑叆蹇界暐绌哄瓧娈�
+        var baOrUpdate = db.Insertable(mesWomcabs).PageSize(1)
+            .IgnoreColumnsNull()
+            .ExecuteCommand() > 0;
+
         if (orUpdate && baOrUpdate) return true;
         throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
     }
@@ -64,8 +75,8 @@
     private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa,
         List<Womcab> mesWomcabs)
     {
-        var decimals = mesWomcabs.Select(s => s.Id).ToArray();
-        var update = base.DeleteById(mesWomcaa.Id);
+        var decimals = mesWomcabs.Select(s => s.Guid).ToArray();
+        var update = base.DeleteById(mesWomcaa.Guid);
         var insertOrUpdate = db
             .Deleteable<Womcab>().In(decimals)
             .ExecuteCommand() > 0;
@@ -74,67 +85,75 @@
         throw new NotImplementedException("鏇存柊澶辫触");
     }
 
-    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto)
+    private Womcaa MapErpCAAtoWomcaa(ErpCAA dto,string PPBOMNO)
     {
         var entity = new Womcaa
         {
-            Erpid = Convert.ToDecimal(dto.Id),
-            Caa001 = dto.FBillNo,
-            Caa021 = dto.FWorkShopID,
-            RoutingId = dto.FRoutingId,
-            WorkShopId = dto.FREMWorkShopId,
-            DepotCode = dto.FStockId,
-            CreateDate = dto.FDate,
-            Caa004 = dto.FBILLTYPE,
-            Caa023 = dto.FStatus,
-            Caa006 = dto.FMaterialId,
-            Caa009 = dto.FUnitId,
+            Erpid = Convert.ToInt32(dto.Id), ///     ERPID
+            Caa001 = PPBOMNO, ///     鍗曞彿
+            Caa021 = dto.FWorkShopID, ///     宸ヤ綔杞﹂棿
+            RoutingId = dto.FRoutingId, ///     宸ヨ壓璺嚎
+            WorkShopId = dto.FREMWorkShopId, ///     浜х嚎
+            DepotCode = dto.FStockId, ///     浠撳簱
+            CreateDate = dto.FDate, ///     鍗曟嵁鏃ユ湡
+            Caa004 = dto.FBILLTYPE, ///     鍗曟嵁绫诲瀷
+            Caa023 = dto.FStatus, ///     鐘舵�� 瀹屽伐锛屾湭瀹屽伐
+            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,
-            StockInlimith = dto.FStockInLimitH,
-            StockInlimitl = dto.FStockInLimitL,
-            Mtono = dto.FMTONO,
-            Lot = dto.FLot,
-            Caa013 = dto.FBomId,
+                : null, ///     鏁伴噺
+            WorkGroupId = dto.FWorkGroupId, ///     璁″垝缁�
+            PlanId = dto.FPlannerID, ///     璁″垝鍛�
+            Caa010 = dto.FPlanStartDate, ///     棰勮寮�宸ユ椂闂�
+            Caa011 = dto.FPlanFinishDate, ///     棰勮瀹屽伐鏃堕棿
+            Caa005 = DateTime.TryParse(dto.FConveyDate, out var conveyDate) 
+            ? (conveyDate <= new DateTime(1900, 1, 1) ? null : conveyDate.ToString())
+                : null, ///     寮�鍗曟棩鏈�
+            StockInlimith = dto.FStockInLimitH, ///     鍏ュ簱涓婇檺
+            StockInlimitl = dto.FStockInLimitL, ///     鍏ュ簱涓嬮檺
+            Mtono = dto.FMTONO, ///     璁″垝璺熻釜鍙�
+            Lot = dto.FLot, ///     鎵瑰彿
+            Caa013 = dto.FBomId, ///     BOM鐗堟
 
-            CreateType = dto.FCreateType,
-            SrcBillType = dto.FSrcBillType,
-            SrcBillNo = dto.FSrcBillNo,
-            SrcBillentryseq = dto.FSrcBillEntrySeq,
-            SaleOrderNo = dto.FSaleOrderNo,
-            SaleOrderEntryseq = dto.FSaleOrderEntrySeq,
-            ForceCloserid = dto.FForceCloserId,
-            CloseType = dto.FCloseType,
-            SrcSplitBillno = dto.FSrcSplitBillNo,
-            Caa016 = dto.FDESCRIPTION,
+            CreateType = dto.FCreateType, ///     鐢熸垚鏂瑰紡
+            SrcBillType = dto.FSrcBillType, ///     婧愬崟绫诲瀷
+            SrcBillNo = dto.FSrcBillNo, ///     婧愬崟缂栧彿
+            SrcBillentryseq = dto.FSrcBillEntrySeq, ///     婧愬崟鍒嗗綍琛屽彿
+            SaleOrderNo = dto.FSaleOrderNo, ///     闇�姹傚崟鎹彿
+            SaleOrderEntryseq = dto.FSaleOrderEntrySeq, ///     闇�姹傚崟鎹鍙�
+            ForceCloserid = dto.FForceCloserId, ///     缁撴浜�
+            CloseType = dto.FCloseType, ///     缁撴绫诲瀷
+            SrcSplitBillno = dto.FSrcSplitBillNo, ///     婧愭媶鍒嗚鍗曠紪鍙�
+            Caa016 = dto.FDESCRIPTION, ///     澶囨敞
 
             Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID)
-                ? Convert.ToDecimal(dto.PLAN_ID)
-                : null,
+                ? Convert.ToInt32(dto.PLAN_ID)
+                : null, ///     ERP婧愬崟ID
             Caa019 = !string.IsNullOrEmpty(dto.PLAN_SEQ)
-                ? Convert.ToDecimal(dto.PLAN_SEQ)
-                : null,
-            Caa020 = dto.PLAN_NUM,
-            Caa015 = dto.F_UNW_Text_xsddh,
-            EerSczz = dto.erP_SCZZ,
-            EerWtzz = dto.erP_WTZZ,
-            Caa015Head = dto.F_XIFG_Integer_tzk,
-            MainProductNo = dto.F_XIFG_Base_w5c,
-            MainProductQty = dto.F_XIFG_Qty_yrr,
-            CustomerItemNumber = dto.F_XIFG_Text_fg2,
-            PackingListNumber = dto.F_XIFG_Text_yrr,
-            CustomerName = dto.F_XIFG_Text_qtr1,
-            Customer = dto.F_XIFG_Base_83g1
+                ? Convert.ToInt32(dto.PLAN_SEQ)
+                : null, ///     ERP婧愬崟琛屽彿
+            Caa020 = dto.PLAN_NUM, ///     ERP婧愬崟鍗曞彿(浠诲姟鍗曞彿)
+            //Caa015 = dto.F_UNW_Text_xsddh, ///     閿�鍞鍗曞彿
+            ErpSczz = Convert.ToInt32(dto.FPrdOrgId), ///     鐢熶骇缁勭粐ID
+            ErpWtzz = Convert.ToInt32(dto.FEnTrustOrgId), ///     濮旀墭缁勭粐ID
+            Btbz = dto.Btbz, ///     濮旀墭缁勭粐ID
+            //Caa015Head = dto.F_XIFG_Integer_tzk, ///     閿�鍞鍗曡鍙�
+            //MainProductNo = dto.F_XIFG_Base_w5c, ///     涓讳骇鍝佺紪鐮�
+            // MainProductQty =
+            //     Convert.ToInt32(dto.F_XIFG_Qty_yrr), ///     涓讳骇鍝佺敓浜ф暟閲�
+            // CustomerItemNumber = dto.F_XIFG_Text_fg2, ///     瀹㈡埛璐у彿
+            // PackingListNumber = dto.F_XIFG_Text_yrr, ///     鍖呰鍗曞彿
+            // CustomerName = dto.F_XIFG_Text_qtr1, ///     瀹㈡埛鍚嶇О
+            // Customer = dto.F_XIFG_Base_83g1, ///     瀹㈡埛
+            Caa0111 = dto.FPlanFinishDate, ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            Typea = dto.TypeA, ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            //Typeb = dto.TypeB ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            SynchronousDate = DateTime.Now
         };
 
         var single = base.GetSingle(it => it.Erpid == entity.Erpid);
-        if (single != null) entity.Id = single.Id;
+        if (single != null) entity.Guid = single.Guid;
 
         return entity;
     }
@@ -147,49 +166,56 @@
         {
             var womcab = new Womcab
             {
-                Erpid = Convert.ToDecimal(dto.FENTRYID),
-                Cab001 = dto.FBillNo,
-                Cab002 = dto.FSeq,
-                Cab003 = dto.FMaterialID,
+                Erpid = Convert.ToInt32(dto.Id), /// ERPID 
+                Cab001 = dto.FBillNo, /// 宸ュ崟鍗曞彿 
+                Cab002 = Convert.ToInt32(dto.FSeq), /// 搴忓彿 
+                Cab003 = dto.FMaterialID, /// 鏉愭枡缂栫爜 
                 Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
                     ? Convert.ToDecimal(dto.FNeedQty)
-                    : null,
+                    : null, /// 闇�棰嗙敤閲� 
                 Cab007 = !string.IsNullOrEmpty(dto.FPickedQty)
                     ? Convert.ToDecimal(dto.FPickedQty)
-                    : null,
-                PositionNo = dto.FPositionNO,
-                SupplyOrganization = dto.FChildSupplyOrgId,
-                IssuingOrganization = dto.FSUPPLYORG,
-                OwnerId = dto.FOwnerID,
-                Mtono = dto.FMTONO,
-                Lot = dto.FLot,
-                DepotCode = dto.FStockID,
-                IssueType = dto.FIssueType,
-                Cab008 = dto.F_UNW_Text_tpgy,
-                Cab009 = dto.FUnitID,
-                SupplyType = dto.FSupplyType,
+                    : null, /// 宸查鐢ㄩ噺 
+                PositionNo = dto.FPositionNO, /// 浣嶇疆鍙� 
+                SupplyOrganization = dto.FChildSupplyOrgId, /// 渚涘簲缁勭粐 
+                IssuingOrganization = dto.FSUPPLYORG, /// 鍙戞枡缁勭粐 
+                OwnerId = dto.FOwnerID, /// 璐т富 
+                Mtono = dto.FMTONO, /// 璁″垝璺熻釜鍙� 
+                Lot = dto.FLot, /// 鎵瑰彿 
+                DepotCode = dto.FStockID, /// 浠撳簱 
+                IssueType = dto.FIssueType, /// 鍙戞枡鏂瑰紡 
+                // Cab008 = dto.F_UNW_Text_tpgy, /// 宸ヨ壓 
+                Cab009 = dto.FUnitID, /// 鍗曚綅 
+                SupplyType = dto.FSupplyType, /// 渚涘簲绫诲瀷(C閲囪喘 Z鑷埗 W濮斿) 
                 Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
                     ? Convert.ToDecimal(dto.FStdQty)
-                    : null,
-                Cab014 = dto.FIsKeyItem,
-                Numerator = dto.FNumerator,
-                Denominator = dto.FDenominator,
-                Eid = Convert.ToDecimal(dto.FID),
-                
-                Scrapqty = dto.FFixScrapQty,
-                Scraprate = dto.FScrapRate,
-                Fsaleorderno = dto.FSALEORDERNO,
-                
-                CustomerItemNumber = dto.F_XIFG_Text_re5,
-                PackingListNumber = dto.F_XIFG_Text_apv,
-                MainProduct = dto.F_XIFG_Base_re5,
-                MainProductQty = Convert.ToDecimal(dto.F_XIFG_Qty_apv),
-                ParentItemName = dto.F_XIFG_Base_apv
+                    : null, /// 缁勬垚鐢ㄩ噺 
+                Cab014 = dto.FIsKeyItem, /// 鏄惁鏇挎枡 
+                Numerator = dto.FNumerator, /// 鍒嗗瓙 
+                Denominator = dto.FDenominator, /// 鍒嗘瘝 
+                Pid = Convert.ToInt32(dto.PID), /// ERP澶碔D 
+                Eid = Convert.ToInt32(dto.Id), /// ERP ID 
+
+                Scrapqty = dto.FFixScrapQty, /// 鍥哄畾鎹熻�� 
+                Scraprate = dto.FScrapRate, /// 鍙樺姩鎹熻�楃巼
+                Freplacegroup = Convert.ToInt32(dto.FReplaceGroup),
+                UseRate = Convert.ToDecimal(dto.FUseRate),
+                MaterialType = dto.FMaterialType,
+                MustQty = Convert.ToDecimal(dto.FMustQty),
+                Typeb = dto.TypeB
+                // Fsaleorderno = dto.FSALEORDERNO, /// 閿�鍞鍗� 
+                //
+                // CustomerItemNumber = dto.F_XIFG_Text_re5, /// 瀹㈡埛璐у彿 
+                // PackingListNumber = dto.F_XIFG_Text_apv, /// 鍖呰鍗曞彿 
+                // MainProduct = dto.F_XIFG_Base_re5, /// 涓讳骇鍝� 
+                // MainProductQty =
+                //     Convert.ToInt32(dto.F_XIFG_Qty_apv), /// 涓讳骇鍝佹暟閲� 
+                // ParentItemName = dto.F_XIFG_Base_apv /// 鐖堕」鐗╂枡鍚嶇О 
             };
 
             var entity = Db.Queryable<Womcab>()
-                .Where(s => s.Erpid == womcab.Erpid).Single();
-            if (entity != null) womcab.Id = entity.Id;
+                .Where(s => s.Eid == womcab.Eid).Single();
+            if (entity != null) womcab.Guid = entity.Guid;
 
             womcabList.Add(womcab);
         }

--
Gitblit v1.9.3