From 34847674372afeee3a28565214f3660db15c8e92 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期二, 16 十二月 2025 09:53:13 +0800
Subject: [PATCH] 生产订单

---
 MES.Service/service/WomcaaManager.cs |  135 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 115 insertions(+), 20 deletions(-)

diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs
index 9f9a6e6..f0fff71 100644
--- a/MES.Service/service/WomcaaManager.cs
+++ b/MES.Service/service/WomcaaManager.cs
@@ -119,12 +119,17 @@
         var entity = new Womcaa
         {
             Erpid = Convert.ToInt32(dto.Id), ///     ERPID
-            Caa001 = PPBOMNO, ///     鍗曞彿
-            Caa021 = dto.FWorkShopID, ///     宸ヤ綔杞﹂棿
+
+            SrcBillType = dto.FSrcBillType, ///     宸ュ崟鍗曞埆
+            Caa001=dto.FBillNo, ///     宸ュ崟鍗曞彿
+            //Caa001 = PPBOMNO, ///     鍗曞彿
+            Caa021 = dto.FWorkShopID0, ///     宸ヤ綔涓績
+            //Caa021 = dto.FWorkShopID, ///     宸ヤ綔杞﹂棿
             RoutingId = dto.FRoutingId, ///     宸ヨ壓璺嚎
             WorkShopId = dto.FREMWorkShopId, ///     浜х嚎
             DepotCode = dto.FStockId, ///     浠撳簱
             CreateDate = dto.FDate, ///     鍗曟嵁鏃ユ湡
+
             Caa004 = dto.FBILLTYPE, ///     鍗曟嵁绫诲瀷
             Caa023 = dto.FStatus, ///     鐘舵�� 瀹屽伐锛屾湭瀹屽伐
             Caa006 = dto.FMaterialId, ///     浜у搧缂栫爜
@@ -144,17 +149,9 @@
             Mtono = dto.FMTONO, ///     璁″垝璺熻釜鍙�
             Lot = dto.FLot, ///     鎵瑰彿
             Caa013 = dto.FBomId, ///     BOM鐗堟
-
+            Caa015 = dto.F_UNW_Text_xsddh, ///     璁㈠崟鍗曞彿
+            Caa015Head = dto.xsddh_type, ///     璁㈠崟鍗曞埆
             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.ToInt32(dto.PLAN_ID)
@@ -163,11 +160,23 @@
                 ? Convert.ToInt32(dto.PLAN_SEQ)
                 : null, ///     ERP婧愬崟琛屽彿
             Caa020 = dto.PLAN_NUM, ///     ERP婧愬崟鍗曞彿(浠诲姟鍗曞彿)
-            //Caa015 = dto.F_UNW_Text_xsddh, ///     閿�鍞鍗曞彿
+
+            ForceCloserid = dto.FForceCloserId, ///     缁撴浜�
+            CloseType = dto.FCloseType, ///     缁撴绫诲瀷
+            SrcSplitBillno = dto.FSrcSplitBillNo, ///     婧愭媶鍒嗚鍗曠紪鍙�
+            Caa016 = dto.FMemoItem, ///     澶囨敞
+
+            SrcBillNo = dto.FSrcBillNo, ///     婧愬崟缂栧彿
+            SrcBillentryseq = dto.FSrcBillEntrySeq, ///     婧愬崟鍒嗗綍琛屽彿
+            SaleOrderNo = dto.FSaleOrderNo, ///     闇�姹傚崟鎹彿
+            SaleOrderEntryseq = dto.FSaleOrderEntrySeq, ///     闇�姹傚崟鎹鍙�
+            
+            
+            
             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), ///     涓讳骇鍝佺敓浜ф暟閲�
@@ -175,12 +184,31 @@
             // PackingListNumber = dto.F_XIFG_Text_yrr, ///     鍖呰鍗曞彿
             // CustomerName = dto.F_XIFG_Text_qtr1, ///     瀹㈡埛鍚嶇О
             // Customer = dto.F_XIFG_Base_83g1, ///     瀹㈡埛
-            Caa0111 = dto.FPlanFinishDate, ///     棰勮瀹屽伐鏃堕棿澶囦唤
-            Typea = dto.TypeA, ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            //Caa0111 = dto.FPlanFinishDate, ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            //Typea = dto.TypeA, ///     棰勮瀹屽伐鏃堕棿澶囦唤
             //Typeb = dto.TypeB ///     棰勮瀹屽伐鏃堕棿澶囦唤
             SynchronousDate = DateTime.Now,
             DocumentStatus = dto.FDocumentStatus
         };
+
+        //鏍规嵁鍗曞彿+鍗曞埆锛岃幏鍙栧搴旂殑id
+        var singleId = Db.Queryable<Womcaa>()
+            .Where(x => x.SrcBillType == dto.FSrcBillType && x.Caa001 == dto.FBillNo)
+            .Select(x => x.Erpid)
+            .First();
+
+        //濡傛灉娌℃湁鍒欑敓鎴愪竴涓柊鐨刬d
+        if (singleId == null || string.IsNullOrWhiteSpace(singleId.ToString()))
+        {
+            entity.Erpid = (int)GenerateNewId();
+            //entity.Erpid = GenerateNewId().ToString();
+            //rohIn.id = GenerateNewId().ToString("0");
+        }
+        else//濡傛灉鏈夊垯浣跨敤宸叉湁鐨刬d
+        {
+            entity.Erpid = Convert.ToInt32(singleId);
+            //entity.Erpid = singleId.ToString();
+        }
 
         var single = base.GetSingle(it => it.Erpid == entity.Erpid);
         if (single != null) entity.Guid = single.Guid;
@@ -198,8 +226,9 @@
             {
                 Erpid = Convert.ToInt32(dto.Id), /// ERPID 
                 Cab001 = dto.FBillNo, /// 宸ュ崟鍗曞彿 
-                Cab002 = Convert.ToInt32(dto.FSeq), /// 搴忓彿 
-                Cab003 = dto.FMaterialID, /// 鏉愭枡缂栫爜 
+                //Cab002 = Convert.ToInt32(dto.FSeq), /// 搴忓彿 
+                Cab002 = Convert.ToInt32(dto.FBillNoType), /// 搴忓彿 
+                Cab003 = dto.FMaterialID2, /// 鏉愭枡缂栫爜 
                 Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
                     ? Convert.ToDecimal(dto.FNeedQty)
                     : null, /// 闇�棰嗙敤閲� 
@@ -214,7 +243,7 @@
                 Lot = dto.FLot, /// 鎵瑰彿 
                 DepotCode = dto.FStockID, /// 浠撳簱 
                 IssueType = dto.FIssueType, /// 鍙戞枡鏂瑰紡 
-                // Cab008 = dto.F_UNW_Text_tpgy, /// 宸ヨ壓 
+                Cab008 = dto.F_UNW_Text_tpgy, /// 宸ヨ壓 
                 Cab009 = dto.FUnitID, /// 鍗曚綅 
                 SupplyType = dto.FSupplyType, /// 渚涘簲绫诲瀷(C閲囪喘 Z鑷埗 W濮斿) 
                 Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
@@ -244,13 +273,79 @@
                 // ParentItemName = dto.F_XIFG_Base_apv /// 鐖堕」鐗╂枡鍚嶇О 
             };
 
+            //鏍规嵁鍗曞彿+鍗曞埆+鏉愭枡鍝佸彿锛岃幏鍙栧搴旂殑id
+            var singleId = Db.Queryable<Womcab>()
+            .Where(x => x.Cab001 == dto.FBillNo && x.Cab003 == dto.FMaterialID2 && x.Cab002 == Convert.ToInt32(dto.FBillNoType))
+            .Select(x => x.Erpid)
+            .First();
+
+            if (singleId == null)//濡傛灉娌℃湁鍒欑敓鎴愪竴涓柊鐨刬d
+            {
+                //entity.EbelnK3id = GenerateNewId2().ToString();
+                womcab.Erpid = (int)GenerateNewId2();
+            }
+            else//濡傛灉鏈夊垯浣跨敤宸叉湁鐨刬d
+            {
+                //entity.EbelnK3id = singleId.EbelnK3id;
+                womcab.Erpid = singleId;
+            }
+
             var entity = Db.Queryable<Womcab>()
                 .Where(s => s.Eid == womcab.Eid).Single();
-            if (entity != null) womcab.Guid = entity.Guid;
+            if (entity != null)
+                womcab.Guid = entity.Guid;
+            else
+                womcab.Guid = Guid.NewGuid();
 
             womcabList.Add(womcab);
         }
 
         return womcabList;
     }
+
+    /// <summary>
+    /// 鐢熸垚鏂扮殑涓昏〃ID锛岀‘淇濅笉閲嶅
+    /// </summary>
+    private decimal GenerateNewId()
+    {
+        // 澶勭悊绌鸿〃鐨勬儏鍐碉紝浠�1寮�濮�
+        var maxId = Db.Queryable<Womcaa>().Max(x => (decimal?)x.Erpid) ?? 0;
+        var newId = maxId + 1;
+
+        // 鍙岄噸妫�鏌ワ紝纭繚鐢熸垚鐨処D涓嶅瓨鍦�
+        while (Db.Queryable<Womcaa>().Where(x => x.Erpid == newId).Any())
+        {
+            newId++;
+        }
+
+        return newId;
+    }
+
+    /// <summary>
+    /// 鐢熸垚鏂扮殑瀛愯〃ID锛岄�氳繃鏁版嵁搴撳簭鍒楄幏鍙栧敮涓�ID
+    /// </summary>
+    private decimal GenerateNewId2()
+    {
+        try
+        {
+            // 鏇挎崲涓猴細
+            var sequenceValueObj = Db.Ado.GetScalar("SELECT NEXT VALUE FOR MES_WOMCAB_IN_DATA_seq");
+            var sequenceValue = Convert.ToDecimal(sequenceValueObj);
+            // 楠岃瘉搴忓垪鍊兼槸鍚︽湁鏁�
+            if (sequenceValue <= 0)
+            {
+                throw new InvalidOperationException($"鏁版嵁搴撳簭鍒� MES_WOMCAB_IN_DATA_seq 杩斿洖浜嗘棤鏁堢殑鍊�: {sequenceValue}");
+            }
+
+            return sequenceValue;
+        }
+        catch (Exception ex)
+        {
+            // 璁板綍寮傚父淇℃伅
+            Console.WriteLine($"璋冪敤鏁版嵁搴撳簭鍒� MES_WOMCAB_IN_DATA_seq 澶辫触: {ex.Message}");
+
+            // 鍚戜笂灞傛姏鍑烘槑纭殑寮傚父淇℃伅
+            throw new InvalidOperationException($"鐢熸垚瀛愯〃ID澶辫触锛屾棤娉曡幏鍙栨暟鎹簱搴忓垪鍊�: {ex.Message}", ex);
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3