From 7b84eb64d11b12b6fb41ae7f7085452512ad5d3f Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 20 六月 2025 08:18:08 +0800
Subject: [PATCH] 1.采购入库优化

---
 service/Warehouse/MesInvItemInCDetailsManager.cs |  494 ++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 310 insertions(+), 184 deletions(-)

diff --git a/service/Warehouse/MesInvItemInCDetailsManager.cs b/service/Warehouse/MesInvItemInCDetailsManager.cs
index 108ba74..648e17b 100644
--- a/service/Warehouse/MesInvItemInCDetailsManager.cs
+++ b/service/Warehouse/MesInvItemInCDetailsManager.cs
@@ -1,9 +1,13 @@
-锘縰sing NewPdaSqlServer.DB;
+锘縰sing Masuit.Tools.Models;
+using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
+using NewPdaSqlServer.entity.Base;
+using NewPdaSqlServer.service.@base;
 using NewPdaSqlServer.util;
 using Newtonsoft.Json;
 using SqlSugar;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
 
 namespace NewPdaSqlServer.service.Warehouse;
 
@@ -11,15 +15,15 @@
 {
     //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
 
-    public PurchaseInventory SaveBarCodes(WarehouseQuery entity)
+    public ItemInBaseModel SaveBarCodes(WarehouseQuery entity)
     {
         string functionName = "閲囪喘鍏ュ簱", fieldName = null, inFieldVal = null;
         string user = entity.userName,
             sectionCode = entity.sectionCode,
             itemBarcode = entity.barcode;
-        string transactionNo = "101";
+        var transactionNo = "101";
         int? billTypeId = 100, num = 0, num2 = 0;
-        int freeze = 0;
+        var freeze = 0;
         decimal cSyQty = 0;
 
         if (string.IsNullOrEmpty(sectionCode))
@@ -32,25 +36,43 @@
         if (itemBarcodeDetails == null)
             throw new Exception("鏉$爜涓嶅瓨鍦紝璇锋牳瀵癸紒");
 
-        if (!itemBarcodeDetails.ComeFlg.Value)
+        if (string.IsNullOrEmpty(itemBarcodeDetails.Memo) || itemBarcodeDetails.Memo != "閲囪喘鍏ュ簱")
             throw new Exception("姝ゆ潯鐮佷笉灞炰簬鍒拌揣鏉$爜锛屾棤娉曠敤閲囪喘鍏ュ簱锛�");
 
         var inventory = Db.Queryable<MesInvItemArn>()
-            .Where(it => it.BillNo == itemBarcodeDetails.BillNo)
+            .Where(it => it.BillNo == itemBarcodeDetails.BillNo && it.Fstatus == true )
             .First();
 
         if (inventory == null)
-            throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曪紒");
+            throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟垨鏈鏍革紒");
+
+        // var inventoryDetails = Db.Queryable<MesInvItemArnDetail>()
+        //     .Where(it => it.ParentGuid == inventory.Guid
+        //                  && it.ItemId == itemBarcodeDetails.ItemId
+        //                  && it.EbelnLine == itemBarcodeDetails.WorkLine
+        //                  && it.Ebeln == itemBarcodeDetails.WorkNo)
+        //     .First();
 
         var inventoryDetails = Db.Queryable<MesInvItemArnDetail>()
-            .Where(it => it.ParentGuid == inventory.Guid
-                         && it.ItemId == itemBarcodeDetails.ItemId
-                         && it.EbelnLine == itemBarcodeDetails.WorkLine
-                         && it.Ebeln == itemBarcodeDetails.WorkNo)
+            .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
+            .First();
+
+        var cgddDetails = Db.Queryable<MesRohInData>()
+            .Where(it => it.EbelnK3id == inventoryDetails.LineK3id)
             .First();
 
         if (inventoryDetails == null)
             throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟槑缁嗭紒");
+
+        //鑾峰彇鍒拌揣妫�楠屾槑缁�
+        var sqlParams = new List<SugarParameter> { new("@dhmxGuid", itemBarcodeDetails.AboutGuid) };
+        var sql1 = @"SELECT *FROM v_dhmx WHERE dhmxGuid = @dhmxGuid ";
+        var dhjymx = Db.Ado.SqlQuery<vDhmx>(sql1, sqlParams).First();
+        //鍒ゅ畾妫�楠岃兘鍚﹀叆搴�
+        if (dhjymx.CanStore!= 1)
+        {
+            throw new Exception($"璇ユ潯鐮佸搴旂殑鏀舵枡鍗曟楠岀粨鏋�:銆恵dhjymx.InspectionResult}銆�,鍒ゅ畾缁撴灉锛氥�恵dhjymx.JudgmentResult}銆戯紝澶勭悊鎰忚锛氥�恵dhjymx.HandlingSuggestion}銆�,鏃犳硶鍏ュ簱");
+        }
 
         var depotCode = Db.Queryable<MesDepotSections>()
             .Where(it => it.DepotSectionCode == sectionCode)
@@ -65,13 +87,13 @@
         MesDepots mesDepost = null;
 
         var checkGuid = UtilityHelper.CheckGuid(depotCode);
-        if (checkGuid && depotCode2 != null)
+        if (checkGuid && depotCode != null)
         {
             mesDepost = Db.Queryable<MesDepots>()
-                .Where(s => s.DepotId.ToString() == depotCode2).First();
+                .Where(s => s.DepotId.ToString() == depotCode).First();
 
-            if (depotCode != mesDepost.Guid)
-                throw new Exception("鎵弿搴撲綅涓庨噰璐叆搴撳簱浣嶄笉涓�鑷达紒");
+            // if (depotCode != mesDepost.Guid)
+            //     throw new Exception("鎵弿搴撲綅涓庨噰璐叆搴撳簱浣嶄笉涓�鑷达紒");
         }
         else
         {
@@ -79,54 +101,111 @@
         }
 
 
-        num = Db.Queryable<MesInvItemInCDetails>()
-            .Where(it => it.ItemBarcode == itemBarcode)
-            .Count();
+        //num = Db.Queryable<MesInvItemInCDetails>()
+        //    .Where(it => it.ItemBarcode == itemBarcode)
+        //    .Count();
 
-        if (num > 0)
-            throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚锛岃鏍稿锛�");
+        //if (num > 0)
+        //    throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚锛岃鏍稿锛�");
 
-        num = Db.Queryable<MesInvItemStocks>()
-            .Where(it => it.ItemBarcode == itemBarcode)
-            .Count();
+        //num = Db.Queryable<MesInvItemStocks>()
+        //    .Where(it => it.ItemBarcode == itemBarcode)
+        //    .Count();
 
-        if (num > 0)
-            throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱锛岃鏍稿锛�");
+        //if (num > 0)
+        //    throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱锛岃鏍稿锛�");
 
-        num = Db.Queryable<MesInvItemArn>()
-            .Where(a => a.BillNo == itemBarcodeDetails.BillNo)
-            .InnerJoin<MesInvItemArnDetail>((a, b) =>
-                b.ParentGuid == a.Guid &&
-                b.ItemId == itemBarcodeDetails.ItemId && b.Ischeck == 1)
-            .Count();
+        var wmsManager = new WmsBaseMangeer();
+        // 鏂板鍏ュ簱鏍¢獙锛堣皟鐢ㄥ瓨鍌ㄨ繃绋嬶級
+        var checkResult = wmsManager.pdaInvJY(
+            db: Db,
+            edtUserNo: entity.userName,
+            barcode: entity.barcode,
+            sectionCode: sectionCode,
+            stockId: mesDepost.DepotId.ToString(),
+            stockOrgId: mesDepost.FSubsidiary,
+            billNo: "", // 鏍规嵁瀹為檯鍗曟嵁鍙蜂紶鍊�
+            transactionNo: "101" // 浜嬪姟绫诲瀷涓庡瓨鍌ㄨ繃绋嬪尮閰�
+        );
 
-        num2 = Db.Queryable<MesInvItemArn>()
-            .Where(a => a.BillNo == itemBarcodeDetails.BillNo)
-            .InnerJoin<MesInvItemArnDetail>((a, b) => b.ParentGuid == a.Guid
-                && b.ItemId == itemBarcodeDetails.ItemId
-                && (b.CheckRes == "鍚堟牸" || b.CheckStates == "鐗归噰鐩存帴浣跨敤"))
-            .Count();
+        if (Convert.ToInt32(checkResult.result) < 1)
+            throw new Exception($"鍏ュ簱鏍¢獙澶辫触锛歿checkResult.strMsg}");
 
-        switch (num)
-        {
-            case 0 when num2 == 0:
-            case > 0 when num2 == 0:
-                freeze = 1;
-                break;
-            case 0 when num2 > 0:
-                throw new Exception("鍏ュ簱澶辫触,鍒拌揣鍗曟嵁鏈夐棶棰橈紒");
-        }
 
-        PurchaseInventory result = new PurchaseInventory();
+
+        //num = Db.Queryable<MesInvItemArn>()
+        //    .Where(a => a.BillNo == itemBarcodeDetails.BillNo)
+        //    .InnerJoin<MesInvItemArnDetail>((a, b) =>
+        //        b.ParentGuid == a.Guid &&
+        //        b.ItemId == itemBarcodeDetails.ItemId && b.Ischeck == 1)
+        //    .Count();
+
+        //num2 = Db.Queryable<MesInvItemArn>()
+        //    .Where(a => a.BillNo == itemBarcodeDetails.BillNo)
+        //    .InnerJoin<MesInvItemArnDetail>((a, b) => b.ParentGuid == a.Guid
+        //        && b.ItemId == itemBarcodeDetails.ItemId
+        //        && (b.CheckRes == "鍚堟牸" || b.CheckStates == "鐗归噰鐩存帴浣跨敤"))
+        //    .Count();
+
+        //switch (num)
+        //{
+        //    case 0 when num2 == 0:
+        //    case > 0 when num2 == 0:
+        //        freeze = 1;
+        //        break;
+        //    case 0 when num2 > 0:
+        //        throw new Exception("鍏ュ簱澶辫触,鍒拌揣鍗曟嵁鏈夐棶棰橈紒");
+        //}
+
+
+        // 鍒ゆ柇璐т富绫诲瀷
+        var owner_type = wmsManager.GetOwnerType(cgddDetails.DemandOrg);
+        // if (Db.Queryable<SysOrganization>().Any(x => x.Fid == cgddDetails.DemandOrg))
+        // {
+        //     owner_type = "BD_OwnerOrg";
+        // }
+        // else
+        // {
+        //     // 绗簩灞傚垽鏂細妫�鏌� MES_CUSTOMER
+        //     if (Db.Queryable<MesCustomer>().Any(x => x.Id == Convert.ToInt32(cgddDetails.DemandOrg)))
+        //     {
+        //         owner_type = "BD_Customer";
+        //     }
+        //     else
+        //     {
+        //         // 绗笁灞傚垽鏂細妫�鏌� MES_SUPPLIER
+        //         if (Db.Queryable<MesSupplier>().Any(x => x.Id == Convert.ToInt32(cgddDetails.DemandOrg)))
+        //         {
+        //             owner_type = "BD_Supplier";
+        //         }
+        //         else
+        //         {
+
+        //             // 绗洓灞傚垽鏂細鍐嶆妫�鏌� SYS_ORGANIZATION
+        //             if (Db.Queryable<SysOrganization>().Any(x => x.Fid == cgddDetails.ReceivingOrg))
+        //             {
+        //                 owner_type = "BD_OwnerOrg";
+        //             }
+        //             else
+        //             {
+        //                 throw new Exception("鍏ュ簱澶辫触,鍒拌揣鍗曟嵁瀵瑰簲鐨勯渶姹傜粍缁囨湁闂锛�");
+        //             }
+        //         }
+        //     }
+        //}
+
+        var result = new ItemInBaseModel();
 
         UseTransaction(db =>
         {
             var existingRecord = db.Queryable<MesInvItemIns>()
-                .Where(it => it.InsDate.Value.Date == DateTime.Now.Date
+                .Where(it => it.InsDate.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")
+                             && it.TaskNo == itemBarcodeDetails.BillNo
                              && it.Status == 0
                              && it.TransctionNo == transactionNo
-                             && it.BillNo == itemBarcodeDetails.BillNo
-                             && it.DepotsCode == mesDepost.DepotCode)
+                             && it.CreateBy == entity.userName
+                             && it.BillTypeId == billTypeId
+                             && it.DepotsId == mesDepost.DepotId)
                 .Select(it => new
                 {
                     it.Guid,
@@ -134,7 +213,7 @@
                 })
                 .First();
 
-            Guid cId = Guid.Empty;
+            var cId = Guid.Empty;
             string cBillNo = null;
 
             if (existingRecord != null)
@@ -146,7 +225,7 @@
             else
             {
                 cId = Guid.NewGuid();
-                cBillNo = BillNo.GetBillNo("IN(鍏ュ簱鍗�)");
+                cBillNo = BillNo.GetBillNo("CGRK(閲囪喘鍏ュ簱)");
 
                 var suppNo = db.Queryable<MesSupplier>()
                     .Where(s => s.Id.ToString() == inventory.SuppId).First();
@@ -167,11 +246,15 @@
                     LastupdateBy = user,
                     LastupdateDate = DateTime.Now,
                     UrgentFlag = itemBarcodeDetails.UrgentFlag.Value
-                        ? (byte)1
-                        : (byte)0,
+                        ? "1"
+                        : "0",
                     CbillNo = itemBarcodeDetails.BillNo,
                     Fstatus = 0,
-                    Status = 0
+                    Status = 0,
+                    ReceiveOrgId = inventory.ReceiveOrgId,
+                    InType = "閲囪喘鍏ュ簱",
+                    TaskNo = itemBarcodeDetails.BillNo
+                    //WorkNo = itemBarcodeDetails.WorkNo
                 }).IgnoreColumns(true).ExecuteCommand();
             }
 
@@ -207,22 +290,22 @@
                                 IsdepsIn = true
                             })
                             .Where(d => d.Guid == detail.Guid)
-                            .IgnoreColumns(ignoreAllNullColumns: true)
+                            .IgnoreColumns(true)
                             .ExecuteCommand();
 
                         // Check if already inserted
                         var count = db.Queryable<MesInvItemInCItems>()
-                            .Where(t =>
-                                t.ItemInId == cId &&
-                                t.ItemId == detail.ItemId &&
-                                t.WorkNo == detail.WorkNo &&
-                                t.WorkLine == detail.WorkLine)
+                            .Where(it =>
+                                it.ItemInId == cId &&
+                                    it.ItemId == detail.ItemId &&
+                                    it.DepotId == depotCode2 &&
+                                    it.EbelnK3id == detail.EbelnK3id &&
+                                    it.LineK3id == detail.LineK3id)
                             .Count();
 
                         cSyQty -= remainingQty.Value;
 
                         if (count == 0)
-                        {
                             // Insert new item into MES_INV_ITEM_IN_C_ITEMS
                             db.Insertable(new MesInvItemInCItems
                             {
@@ -234,7 +317,7 @@
                                 DepotCode = mesDepost.DepotCode,
                                 ItemSname = itemBarcodeDetails.ItemSname,
                                 Unit = itemBarcodeDetails.Unit,
-                                Ebeln = detail.WorkNo,
+                                Ebeln = detail.Ebeln,
                                 BillNo = cBillNo,
                                 WorkNo = detail.WorkNo,
                                 CbillNo = detail.CbillNo,
@@ -243,22 +326,22 @@
                                 SuppNo = itemBarcodeDetails.SuppNo,
                                 Remark = itemBarcodeDetails.Memo,
                                 EbelnK3id = detail.EbelnK3id,
-                                LineK3id = detail.LineK3id
+                                LineK3id = detail.LineK3id,
+                                DepotId = depotCode2,
+                                itemDabid = itemBarcodeDetails.AboutGuid.ToString()
                             }).IgnoreColumns(true).ExecuteCommand();
-                        }
                         else
-                        {
                             db.Updateable<MesInvItemInCItems>()
                                 .SetColumns(it =>
                                     it.Quantity == it.Quantity + remainingQty)
                                 .Where(it =>
                                     it.ItemInId == cId &&
                                     it.ItemId == detail.ItemId &&
-                                    it.WorkNo == detail.WorkNo &&
-                                    it.WorkLine == detail.WorkLine)
-                                .IgnoreColumns(ignoreAllNullColumns: true)
+                                    it.DepotId == depotCode2 &&
+                                    it.EbelnK3id == detail.EbelnK3id &&
+                                    it.LineK3id == detail.LineK3id)
+                                .IgnoreColumns(true)
                                 .ExecuteCommand();
-                        }
 
                         // Insert new detail into MES_INV_ITEM_IN_C_DETAILS
                         db.Insertable(new MesInvItemInCDetails
@@ -291,7 +374,9 @@
                             TaskNo = detail.WorkNo,
                             EbelnK3id = detail.EbelnK3id,
                             LineK3id = detail.LineK3id,
-                            ItemId = detail.ItemId
+                            ItemId = detail.ItemId,
+                            ReceiveOrgId = inventory.ReceiveOrgId,
+                            LotNo = cgddDetails.BatchNumber
                         }).IgnoreColumns(true).ExecuteCommand();
                     }
                     else
@@ -303,19 +388,19 @@
                                 OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty)
                             })
                             .Where(d => d.Guid == detail.Guid)
-                            .IgnoreColumns(ignoreAllNullColumns: true)
+                            .IgnoreColumns(true)
                             .ExecuteCommand();
 
                         var count = db.Queryable<MesInvItemInCItems>()
-                            .Where(t =>
-                                t.ItemInId == cId &&
-                                t.ItemId == detail.ItemId &&
-                                t.WorkNo == detail.WorkNo &&
-                                t.WorkLine == detail.WorkLine)
+                            .Where(it =>
+                                it.ItemInId == cId &&
+                                    it.ItemId == detail.ItemId &&
+                                    it.DepotId == depotCode2 &&
+                                    it.EbelnK3id == detail.EbelnK3id &&
+                                    it.LineK3id == detail.LineK3id)
                             .Count();
 
                         if (count == 0)
-                        {
                             db.Insertable(new MesInvItemInCItems
                             {
                                 ItemInId = cId,
@@ -337,22 +422,21 @@
                                 Remark = itemBarcodeDetails.Memo,
                                 EbelnK3id = detail.EbelnK3id,
                                 LineK3id = detail.LineK3id,
-                                ItemId = detail.ItemId
+                                ItemId = detail.ItemId,
+                                DepotId = depotCode2
                             }).IgnoreColumns(true).ExecuteCommand();
-                        }
                         else
-                        {
                             db.Updateable<MesInvItemInCItems>()
                                 .SetColumns(it =>
                                     it.Quantity == it.Quantity + cSyQty)
                                 .Where(it =>
                                     it.ItemInId == cId &&
                                     it.ItemId == detail.ItemId &&
-                                    it.WorkNo == detail.WorkNo &&
-                                    it.WorkLine == detail.WorkLine)
-                                .IgnoreColumns(ignoreAllNullColumns: true)
+                                    it.DepotId == depotCode2 &&
+                                    it.EbelnK3id == detail.EbelnK3id &&
+                                    it.LineK3id == detail.LineK3id)
+                                .IgnoreColumns(true)
                                 .ExecuteCommand();
-                        }
 
                         db.Insertable(new MesInvItemInCDetails
                         {
@@ -385,7 +469,9 @@
                             TaskNo = detail.WorkNo,
                             EbelnK3id = detail.EbelnK3id,
                             LineK3id = detail.LineK3id,
-                            ItemId = detail.ItemId
+                            ItemId = detail.ItemId,
+                            ReceiveOrgId = inventory.ReceiveOrgId,
+                            LotNo = cgddDetails.BatchNumber
                         }).IgnoreColumns(true).ExecuteCommand();
 
                         cSyQty = 0; // Remaining quantity fulfilled
@@ -400,7 +486,7 @@
                     BusinessType = 1,
                     ItemBarcode = itemBarcode,
                     ItemNo = itemBarcodeDetails.ItemNo,
-                    LotNo = itemBarcodeDetails.LotNo,
+                    LotNo = cgddDetails.BatchNumber,
                     EpFlag = true,
                     Quantity = itemBarcodeDetails.Quantity,
                     ToInvDepotsCode = mesDepost.DepotCode,
@@ -425,16 +511,21 @@
             }
             else
             {
+                var detailone = db.Queryable<MesInvItemArnDetail>()
+                    .Where(d =>
+                        d.Guid == itemBarcodeDetails.AboutGuid)
+                    .First();
+
                 // 妫�鏌ユ槸鍚﹀瓨鍦ㄤ簬 MES_INV_ITEM_IN_C_ITEMS 琛�
                 var existingCount = db.Queryable<MesInvItemInCItems>()
-                    .Where(t => t.ItemInId == cId &&
-                                t.ItemId == itemBarcodeDetails.ItemId &&
-                                t.WorkNo == itemBarcodeDetails.WorkNo &&
-                                t.WorkLine == itemBarcodeDetails.WorkLine)
+                    .Where(it =>
+                    it.ItemInId == cId &&
+                                    it.ItemId == detailone.ItemId &&
+                                    it.DepotId == depotCode2 &&
+                                    it.itemDabid == itemBarcodeDetails.AboutGuid.ToString())
                     .Count();
 
                 if (existingCount == 0)
-                {
                     // 涓嶅瓨鍦ㄦ椂鎻掑叆鏂拌褰�
                     db.Insertable(new MesInvItemInCItems
                     {
@@ -457,23 +548,24 @@
                         Remark = itemBarcodeDetails.Memo,
                         EbelnK3id = itemBarcodeDetails.EbelnK3id,
                         LineK3id = itemBarcodeDetails.LineK3id,
-                        ItemId = itemBarcodeDetails.ItemId
+                        ItemId = itemBarcodeDetails.ItemId,
+                        DepotId = depotCode2,
+                        itemDabid = itemBarcodeDetails.AboutGuid.ToString()
                     }).IgnoreColumns(true).ExecuteCommand();
-                }
                 else
-                {
                     // 瀛樺湪鏃舵洿鏂版暟閲�
                     db.Updateable<MesInvItemInCItems>()
-                        .SetColumns(it =>
-                            it.Quantity ==
-                            it.Quantity + itemBarcodeDetails.Quantity)
-                        .Where(it => it.ItemInId == cId &&
-                                     it.ItemId == itemBarcodeDetails.ItemId &&
-                                     it.WorkNo == itemBarcodeDetails.WorkNo &&
-                                     it.WorkLine == itemBarcodeDetails.WorkLine)
-                        .IgnoreColumns(ignoreAllNullColumns: true)
+                        .SetColumns(it => new MesInvItemInCItems
+                        {
+                            Quantity = SqlFunc.IsNull(it.Quantity, 0) + itemBarcodeDetails.Quantity // 纭繚 Quantity 涓嶄负 null
+                        })
+                        .Where(it =>
+                                    it.ItemInId == cId &&
+                                    it.ItemId == detailone.ItemId &&
+                                    it.DepotId == depotCode2 &&
+                                    it.itemDabid == itemBarcodeDetails.AboutGuid.ToString())
+                        //.IgnoreColumns(true) // 淇濈暀 IgnoreColumns
                         .ExecuteCommand();
-                }
 
                 // 鎻掑叆 mes_inv_item_in_c_details 琛�
                 db.Insertable(new MesInvItemInCDetails
@@ -486,7 +578,7 @@
                     EpFlag = true,
                     WorkType = 1,
                     ItemNo = itemBarcodeDetails.ItemNo,
-                    LotNo = itemBarcodeDetails.LotNo,
+                    LotNo = cgddDetails.BatchNumber,
                     SuppId = itemBarcodeDetails.SuppId,
                     SuppNo = itemBarcodeDetails.SuppNo,
                     DepotCode = mesDepost.DepotCode,
@@ -512,7 +604,9 @@
                     Ischeck = true,
                     CheckDate = inventoryDetails.CheckDate,
                     CheckRes = inventoryDetails.CheckRes,
-                    CheckStates = inventoryDetails.CheckStates
+                    CheckStates = inventoryDetails.CheckStates,
+                    ReceiveOrgId = inventory.ReceiveOrgId,
+                    DepotId = Convert.ToInt64(depotCode2)
                 }).IgnoreColumns(true).ExecuteCommand();
 
                 // 鎻掑叆 mes_inv_business2 琛�
@@ -550,11 +644,13 @@
                 // 鎻掑叆 mes_inv_item_stocks 琛�
             }
 
+
+
             db.Insertable(new MesInvItemStocks
             {
                 TaskNo = itemBarcodeDetails.TaskNo,
                 ItemBarcode = itemBarcode,
-                ItemNo = itemBarcodeDetails.ItemNo,
+                ItemNo = cgddDetails.BatchNumber,
                 LotNo = itemBarcodeDetails.LotNo,
                 Quantity = itemBarcodeDetails.Quantity,
                 DepotsCode = mesDepost.DepotCode,
@@ -570,25 +666,31 @@
                 EbelnK3id = itemBarcodeDetails.EbelnK3id,
                 LineK3id = itemBarcodeDetails.LineK3id,
                 ItemId = itemBarcodeDetails.ItemId,
-                BillNo = itemBarcodeDetails.BillNo
+                BillNo = itemBarcodeDetails.BillNo,
+                DepotId = Convert.ToInt32(depotCode2),
+                OwnerId = cgddDetails.DemandOrg,
+                OwnerType = owner_type,
+                StockOrgId = mesDepost.FSubsidiary,
+                IndepUserCode = user
             }).IgnoreColumns(true).ExecuteCommand();
 
             itemBarcodeDetails.Hbdy ??= 0;
 
             if (itemBarcodeDetails.Hbdy != 1)
             {
+                //鏇存柊鏀舵枡鍗曟槑缁�
                 db.Updateable<MesInvItemArnDetail>()
                     .SetColumns(d => new MesInvItemArnDetail
                     {
                         OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty)
                     })
-                    .Where(d => d.Guid == inventoryDetails.Guid)
+                    .Where(d => d.Guid == itemBarcodeDetails.AboutGuid)
                     .ExecuteCommand();
 
                 var first = db
                     .Queryable<MesInvItemArnDetail>()
                     .Where(b =>
-                        b.Guid == inventoryDetails.Guid)
+                        b.Guid == itemBarcodeDetails.AboutGuid)
                     .Select(b => new
                     {
                         TotalQuantity =
@@ -601,12 +703,10 @@
                 var TotalOkRkQty = first.TotalOkRkQty ?? 0;
 
                 if (TotalQuantity == TotalOkRkQty)
-                {
                     db.Updateable<MesInvItemArnDetail>()
                         .SetColumns(s => s.IsdepsIn == true)
-                        .Where(s => s.Guid == inventoryDetails.Guid)
+                        .Where(s => s.Guid == itemBarcodeDetails.AboutGuid)
                         .ExecuteCommand();
-                }
 
 
                 var totalSummary = db.Queryable<MesInvItemArnDetail>()
@@ -622,17 +722,15 @@
 
                 if ((totalSummary.TotalQuantity ?? 0) ==
                     (totalSummary.TotalOkRkQty ?? 0))
-                {
                     db.Updateable<MesInvItemArn>()
                         .SetColumns(it => it.Status == 1)
                         .Where(it => it.BillNo == itemBarcodeDetails.BillNo)
                         .ExecuteCommand();
-                }
 
                 var totalCDetailsQuantity = db.Queryable<MesInvItemInCDetails>()
-                    .Where(it => it.WorkLine == itemBarcodeDetails.WorkLine &&
+                    .Where(it => it.ItemId == itemBarcodeDetails.ItemId &&
                                  it.WorkNo == itemBarcodeDetails.WorkNo &&
-                                 it.CbillNo == itemBarcodeDetails.BillNo)
+                                 it.ItemInId == cId)
                     .Sum(it => it.Quantity);
 
                 var detailSummary = db.Queryable<MesInvItemArnDetail>()
@@ -649,19 +747,56 @@
                 var diffQty = comeQty - invQty;
 
                 if (detailSummary == null)
-                {
                     throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟槑缁嗭紒");
-                }
 
                 var mesItems = db.Queryable<MesItems>()
                     .Where(s => s.Id == itemBarcodeDetails.ItemId).First();
 
-                result.Message =
-                    $"鏉$爜鏁伴噺 {itemBarcodeDetails.Quantity},閲囪喘璁㈠崟 {itemBarcodeDetails.WorkNo} 椤规 {itemBarcodeDetails.WorkLine} 鐗╂枡 {mesItems.ItemNo} 鏈鍏ュ簱鎬绘暟锛歿totalCDetailsQuantity} 鎬诲埌 {comeQty} 宸插叆 {invQty} 娆� {diffQty}";
+                //result.Message =
+                //    $"鏉$爜鏁伴噺 {itemBarcodeDetails.Quantity},閲囪喘璁㈠崟 {itemBarcodeDetails.WorkNo} 椤规 {itemBarcodeDetails.WorkLine} 鐗╂枡 {mesItems.ItemNo} 鏈鍏ュ簱鎬绘暟锛歿totalCDetailsQuantity} 鎬诲埌 {comeQty} 宸插叆 {invQty} 娆� {diffQty}";
+                result.Message = $"鐗╂枡{mesItems.ItemNo}鍏ュ簱鎴愬姛鏁伴噺{itemBarcodeDetails.Quantity.ToString()}";
+
+                result.itemDetail = mesItems;
+
+                result.ItemInDetails = db.Queryable<MesInvItemInCItems,MesItems>(
+                    (a, b) => new JoinQueryInfos(
+                    JoinType.Left,
+                    a.ItemId == b.ItemId)
+                    )
+                    .Where(a => a.ItemInId == cId && a.ItemId == itemBarcodeDetails.ItemId)
+                    .Select<dynamic>((a, b) => new 
+                    {
+                        ItemNo = b.ItemNo,
+                        ItemName = b.ItemName,
+                        ItemModel = b.ItemModel,
+                        FQty = a.Quantity, // 鐢宠鏁伴噺
+                        FMaterialId = b.ItemId,
+                        Id = b.Guid.ToString()
+                    })
+                    .ToList();
+
+                result.ItemBarCDetails = db.Queryable<MesInvItemInCDetails, MesItems>(
+                    (a, b) => new JoinQueryInfos(
+                    JoinType.Left,
+                    a.ItemId == b.ItemId)
+                    )
+                    .Where(a => a.ItemInId == cId && a.ItemId == itemBarcodeDetails.ItemId)
+                    .Select<dynamic>((a, b) => new
+                    {
+                        ItemNo = b.ItemNo,
+                        ItemName = b.ItemName,
+                        ItemModel = b.ItemModel,
+                        FQty = a.Quantity, // 鐢宠鏁伴噺
+                        FMaterialId = b.ItemId,
+                        Id = a.Guid.ToString(),
+                        kw = a.DepotSectionCode,
+                        barcode = a.ItemBarcode
+                    })
+                    .ToList();
 
 
-                result.ItemNo = mesItems.ItemNo;
-                result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity);
+                //result.ItemNo = mesItems.ItemNo;
+                result.SumQuantity = Convert.ToDecimal(invQty);
 
                 return 1;
             }
@@ -681,23 +816,19 @@
 
                 if ((totalSummary.TotalQuantity ?? 0) ==
                     (totalSummary.TotalOkRkQty ?? 0))
-                {
                     db.Updateable<MesInvItemArn>()
                         .SetColumns(it => it.Status == 1)
                         .Where(it => it.BillNo == itemBarcodeDetails.BillNo)
                         .ExecuteCommand();
-                }
 
                 // Step 2: Calculate total sum from `mes_inv_item_in_c_details`
                 var totalCDetailsQuantity = db.Queryable<MesInvItemInCDetails>()
-                    .Where(it => it.CbillNo == itemBarcodeDetails.BillNo &&
-                                 it.ItemId == itemBarcodeDetails.ItemId)
+                    .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
                     .Sum(it => it.Quantity);
 
                 // Step 3: Calculate comeQty and invQty from `mes_inv_item_arn_detail`
                 var detailSummary = db.Queryable<MesInvItemArnDetail>()
-                    .Where(it => it.CbillNo == itemBarcodeDetails.BillNo &&
-                                 it.ItemId == itemBarcodeDetails.ItemId)
+                    .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
                     .Select(it => new
                     {
                         TotalComeQty = SqlFunc.AggregateSum(it.Quantity),
@@ -706,9 +837,7 @@
                     .First();
 
                 if (detailSummary == null)
-                {
                     throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟槑缁嗭紒");
-                }
 
                 var comeQty = detailSummary.TotalComeQty ?? 0;
                 var invQty = detailSummary.TotalInvQty ?? 0;
@@ -722,7 +851,7 @@
                     $" 鏉$爜鏁伴噺:{itemBarcodeDetails.Quantity},鐗╂枡 {mesItems.ItemNo} 鏈鍏ュ簱鎬绘暟锛歿totalCDetailsQuantity} 鎬诲埌 {comeQty} 宸插叆 {invQty} 娆� {diffQty}";
 
 
-                result.ItemNo = mesItems.ItemNo;
+                //result.ItemNo = mesItems.ItemNo;
                 result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity);
             }
 
@@ -732,25 +861,30 @@
             if (mesInvItemInCDetails == null)
                 throw new Exception("鐗╂枡鍏ュ簱鏉$爜鏄庣粏涓嶅瓨鍦�"); // 鎶涘嚭寮傚父浠ヤ緵鍓嶅彴澶勭悊
 
+            // 鍒涘缓 鎻掑叆鏃ュ織
+            var logService = new LogService();
+            var LogMsg = "銆怭DA銆戦噰璐叆搴撱�傛潯鐮併��" + entity.barcode + "銆� 鍏ュ簱鍗曞彿銆�" + cBillNo + "銆�";
+            logService.CreateLog(db, entity.userName, inventory.Guid.ToString(), "MES_INV_ITEM_ARN", LogMsg, inventory.BillNo);
+
             return 1;
         });
 
         var purchaseInventory = getPurchaseInventory(entity);
 
-        result.ItemIns = purchaseInventory.ItemIns;
-        result.ItemInDetails = purchaseInventory.ItemInDetails;
-        result.InvItemInCDetails = purchaseInventory.InvItemInCDetails;
+        
+        //result.ItemInDetails = purchaseInventory.ItemInDetails;
+        //result.InvItemInCDetails = purchaseInventory.InvItemInCDetails;
 
         return result;
     }
 
-    public PurchaseInventory getPurchaseInventory(WarehouseQuery query)
+    public ItemInBaseModel getPurchaseInventory(WarehouseQuery query)
     {
-        return new PurchaseInventory
+        return new ItemInBaseModel
         {
-            ItemIns = GetInvItemInsList(query).Items[0],
-            ItemInDetails = GetItemInDetails(query.id),
-            InvItemInCDetails = GetInvItemInCDetails(query.id)
+            //ItemIns = GetInvItemInsList(query).Items[0],
+            //ItemInDetails = GetItemInDetails(query.id),
+            //InvItemInCDetails = GetInvItemInCDetails(query.id)
         };
     }
 
@@ -758,21 +892,19 @@
         WarehouseQuery query)
     {
         var parsedGuid = Guid.Empty;
-        if (string.IsNullOrEmpty(query.id))
+        if (!string.IsNullOrEmpty(query.id))
         {
-            return ([], 0);
+            var isValid = Guid.TryParse(query.id, out parsedGuid);
+            if (!isValid)
+                throw new ApplicationException("GUID杞崲閿欒");
         }
-
-        bool isValid = Guid.TryParse(query.id, out parsedGuid);
-        if (!isValid)
-            throw new ApplicationException("GUID杞崲閿欒");
 
         var totalCount = 0;
         var result = Db.Queryable<MesInvItemIns, MesDepots, MesSupplier>(
                 (a, b, c) =>
                     new JoinQueryInfos(JoinType.Left,
-                        a.DepotsCode == b.DepotCode,
-                        JoinType.Left, a.SuppNo == c.SuppNo))
+                        a.DepotsId == b.DepotId,
+                        JoinType.Left, a.SuppId == c.Id.ToString()))
             .WhereIF(UtilityHelper.CheckGuid(parsedGuid),
                 (a, b, c) => a.Guid == parsedGuid)
             .Select((a, b, c) => new MesInvItemIns
@@ -798,12 +930,9 @@
     {
         //string杞琯uid
         var parsedGuid = Guid.Empty;
-        if (string.IsNullOrEmpty(pid))
-        {
-            return ( []);
-        }
+        if (string.IsNullOrEmpty(pid)) return [];
 
-        bool isValid = Guid.TryParse(pid, out parsedGuid);
+        var isValid = Guid.TryParse(pid, out parsedGuid);
         if (!isValid)
             throw new ApplicationException("GUID杞崲閿欒");
 
@@ -821,7 +950,7 @@
                 ItemNo = c.ItemNo,
                 ItemSname = g.ItemSname,
                 Quantity = g.Quantity,
-                Unit = d.Fname,
+                Unit = d.Fname
             })
             .ToList();
 
@@ -832,12 +961,9 @@
     {
         //string杞琯uid
         var parsedGuid = Guid.Empty;
-        if (string.IsNullOrEmpty(pid))
-        {
-            return ( []);
-        }
+        if (string.IsNullOrEmpty(pid)) return [];
 
-        bool isValid = Guid.TryParse(pid, out parsedGuid);
+        var isValid = Guid.TryParse(pid, out parsedGuid);
         if (!isValid)
             throw new ApplicationException("GUID杞崲閿欒");
 
@@ -845,7 +971,7 @@
                 (g, c, d) => new JoinQueryInfos(
                     JoinType.Left,
                     g.ItemId == c.Id, JoinType.Inner,
-                    d.Id == Convert.ToDecimal(c.ItemUnit)
+                    d.Id.ToString() == c.Fpurchaseunitid
                 )
             ).WhereIF(UtilityHelper.CheckGuid(parsedGuid),
                 (g, c, d) => g.ItemInId == parsedGuid)
@@ -886,8 +1012,12 @@
         }
 
         var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl;
+
+        var newGuid = Guid.NewGuid();
         var message = new MessageCenter
         {
+            Guid = newGuid,
+            //Pid = newGuid,
             TableName = tableName,
             Url = ErpUrl,
             Status = 1,
@@ -911,11 +1041,10 @@
         var message = MesToErpParam(query);
 
         var executeReturnIdentity =
-            Db.Insertable(message).ExecuteReturnIdentity();
+            Db.Insertable(message).ExecuteCommand();
         if (executeReturnIdentity > 0)
         {
-            // message.Guid = executeReturnIdentity;
-            message.Pid = executeReturnIdentity;
+            message.Pid = message.Guid;
             return message;
         }
 
@@ -943,7 +1072,7 @@
             .SetColumns(x => x.Status == entity.status)
             .SetColumns(x => x.InsDate == entity.date)
             .Where(x => x.BillNo == entity.billNo)
-            .IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand() > 0;
+            .IgnoreColumns(true).ExecuteCommand() > 0;
     }
 
     private string GetErpParameters(string? billNo)
@@ -959,24 +1088,20 @@
             MesInvItemArnDetail>(
             (g, c, d, a) => new JoinQueryInfos(
                 JoinType.Left,
-                g.ItemNo == c.ItemNo && g.Company == c.Company &&
-                g.Factory == c.Factory, JoinType.Inner,
-                d.Id == Convert.ToDecimal(c.ItemUnit),
-                JoinType.Inner,
-                a.Ebeln == g.WorkNo && a.WorkLine == g.EbelnLineNo
-                                    && g.CbillNo == a.CbillNo
+                g.ItemId == c.Id, JoinType.Inner,
+                d.Id.ToString() == c.Fpurchaseunitid,
+                JoinType.Inner, a.Ebeln == g.WorkNo && g.CbillNo == a.CbillNo
             )
         ).Where((g, c, d, a) => g.BillNo == billNo).Select<Material>(
             (g, c, d, a) => new Material
             {
-                // FstockId = g.DepotCode,
-                // FuintId = d.Fnumber,
-                // FsrcEntryId = a.Id,
-                // FmesEntryId = g.Id,
-                // FmaterialId = a.ItemNo,
-                // DepotSectionCode = g.DepotSectionCode,
-                // WorkNo = g.WorkNo,
-                // Frealqty = g.Quantity
+                FMaterialId = c.ItemNo,
+                FRealQty = g.Quantity.ToString(),
+                FStockId = g.DepotCode,
+                FLot = a.CbillNo,
+                FUnitID = d.Fnumber,
+                FsrcEntryId = a.Guid.ToString(),
+                FMesEntryid = g.Guid.ToString()
             }).ToList();
 
 
@@ -986,12 +1111,13 @@
 
         var jsonEntries = materials.Select(d => new
         {
-            // FMaterialId = d.FmaterialId,
-            // FUintId = d.FuintId,
-            // FRealQty = d.Frealqty,
-            // FStockId = d.FstockId,
-            // FSRCENTRYID = d.FsrcEntryId.ToString(),
-            // F_MES_ENTRYID = d.FmesEntryId.ToString()
+            d.FMaterialId,
+            d.FRealQty,
+            d.FStockId,
+            d.FLot,
+            FUintId = d.FUnitID,
+            FSRCENTRYID = d.FsrcEntryId,
+            F_MES_ENTRYID = d.FMesEntryid
         }).ToList();
 
         var fdate = DateTime.Now.ToString("yyyy-MM-dd");

--
Gitblit v1.9.3