From e33ee3adc98f5411395682cbfc9b1d367cdae7ee Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期六, 15 二月 2025 10:20:22 +0800
Subject: [PATCH] 1.生产报工优化 2.采购入库优化

---
 service/Warehouse/MesInvItemInCDetailsManager.cs |  148 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 108 insertions(+), 40 deletions(-)

diff --git a/service/Warehouse/MesInvItemInCDetailsManager.cs b/service/Warehouse/MesInvItemInCDetailsManager.cs
index 13296d4..5865812 100644
--- a/service/Warehouse/MesInvItemInCDetailsManager.cs
+++ b/service/Warehouse/MesInvItemInCDetailsManager.cs
@@ -1,4 +1,5 @@
-锘縰sing NewPdaSqlServer.DB;
+锘縰sing Masuit.Tools.Models;
+using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
 using NewPdaSqlServer.util;
@@ -51,6 +52,10 @@
 
         var inventoryDetails = Db.Queryable<MesInvItemArnDetail>()
             .Where(it => it.Guid == itemBarcodeDetails.AboutGuid)
+            .First();
+
+        var cgddDetails = Db.Queryable<MesRohInData>()
+            .Where(it => it.EbelnK3id == inventoryDetails.LineK3id)
             .First();
 
         if (inventoryDetails == null)
@@ -121,6 +126,41 @@
                 throw new Exception("鍏ュ簱澶辫触,鍒拌揣鍗曟嵁鏈夐棶棰橈紒");
         }
 
+        var owner_type = "";
+        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 PurchaseInventory();
 
         UseTransaction(db =>
@@ -129,7 +169,7 @@
                 .Where(it => it.InsDate.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")
                              && it.Status == 0
                              && it.TransctionNo == transactionNo
-                             && it.BillNo == itemBarcodeDetails.BillNo
+                             && it.CbillNo == itemBarcodeDetails.BillNo
                              && it.DepotsCode == mesDepost.DepotCode)
                 .Select(it => new
                 {
@@ -150,7 +190,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();
@@ -176,7 +216,9 @@
                     CbillNo = itemBarcodeDetails.BillNo,
                     Fstatus = 0,
                     Status = 0,
-                    ReceiveOrgId = inventory.ReceiveOrgId
+                    ReceiveOrgId = inventory.ReceiveOrgId,
+                    InType = "閲囪喘鍏ュ簱",
+                    //WorkNo = itemBarcodeDetails.WorkNo
                 }).IgnoreColumns(true).ExecuteCommand();
             }
 
@@ -217,11 +259,12 @@
 
                         // 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;
@@ -247,7 +290,8 @@
                                 SuppNo = itemBarcodeDetails.SuppNo,
                                 Remark = itemBarcodeDetails.Memo,
                                 EbelnK3id = detail.EbelnK3id,
-                                LineK3id = detail.LineK3id
+                                LineK3id = detail.LineK3id,
+                                DepotId = depotCode2
                             }).IgnoreColumns(true).ExecuteCommand();
                         else
                             db.Updateable<MesInvItemInCItems>()
@@ -256,8 +300,9 @@
                                 .Where(it =>
                                     it.ItemInId == cId &&
                                     it.ItemId == detail.ItemId &&
-                                    it.WorkNo == detail.WorkNo &&
-                                    it.WorkLine == detail.WorkLine)
+                                    it.DepotId == depotCode2 &&
+                                    it.EbelnK3id == detail.EbelnK3id &&
+                                    it.LineK3id == detail.LineK3id)
                                 .IgnoreColumns(true)
                                 .ExecuteCommand();
 
@@ -293,7 +338,8 @@
                             EbelnK3id = detail.EbelnK3id,
                             LineK3id = detail.LineK3id,
                             ItemId = detail.ItemId,
-                            ReceiveOrgId = inventory.ReceiveOrgId
+                            ReceiveOrgId = inventory.ReceiveOrgId,
+                            LotNo = cgddDetails.BatchNumber
                         }).IgnoreColumns(true).ExecuteCommand();
                     }
                     else
@@ -309,11 +355,12 @@
                             .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)
@@ -338,7 +385,8 @@
                                 Remark = itemBarcodeDetails.Memo,
                                 EbelnK3id = detail.EbelnK3id,
                                 LineK3id = detail.LineK3id,
-                                ItemId = detail.ItemId
+                                ItemId = detail.ItemId,
+                                DepotId = depotCode2
                             }).IgnoreColumns(true).ExecuteCommand();
                         else
                             db.Updateable<MesInvItemInCItems>()
@@ -347,8 +395,9 @@
                                 .Where(it =>
                                     it.ItemInId == cId &&
                                     it.ItemId == detail.ItemId &&
-                                    it.WorkNo == detail.WorkNo &&
-                                    it.WorkLine == detail.WorkLine)
+                                    it.DepotId == depotCode2 &&
+                                    it.EbelnK3id == detail.EbelnK3id &&
+                                    it.LineK3id == detail.LineK3id)
                                 .IgnoreColumns(true)
                                 .ExecuteCommand();
 
@@ -384,7 +433,8 @@
                             EbelnK3id = detail.EbelnK3id,
                             LineK3id = detail.LineK3id,
                             ItemId = detail.ItemId,
-                            ReceiveOrgId = inventory.ReceiveOrgId
+                            ReceiveOrgId = inventory.ReceiveOrgId,
+                            LotNo = cgddDetails.BatchNumber
                         }).IgnoreColumns(true).ExecuteCommand();
 
                         cSyQty = 0; // Remaining quantity fulfilled
@@ -399,7 +449,7 @@
                     BusinessType = 1,
                     ItemBarcode = itemBarcode,
                     ItemNo = itemBarcodeDetails.ItemNo,
-                    LotNo = itemBarcodeDetails.LotNo,
+                    LotNo = cgddDetails.BatchNumber,
                     EpFlag = true,
                     Quantity = itemBarcodeDetails.Quantity,
                     ToInvDepotsCode = mesDepost.DepotCode,
@@ -424,12 +474,19 @@
             }
             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.EbelnK3id == detailone.EbelnK3id &&
+                                    it.LineK3id == detailone.LineK3id)
                     .Count();
 
                 if (existingCount == 0)
@@ -455,19 +512,23 @@
                         Remark = itemBarcodeDetails.Memo,
                         EbelnK3id = itemBarcodeDetails.EbelnK3id,
                         LineK3id = itemBarcodeDetails.LineK3id,
-                        ItemId = itemBarcodeDetails.ItemId
+                        ItemId = itemBarcodeDetails.ItemId,
+                        DepotId = depotCode2
                     }).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(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.EbelnK3id == detailone.EbelnK3id &&
+                                it.LineK3id == detailone.LineK3id)
+                        //.IgnoreColumns(true) // 淇濈暀 IgnoreColumns
                         .ExecuteCommand();
 
                 // 鎻掑叆 mes_inv_item_in_c_details 琛�
@@ -481,7 +542,7 @@
                     EpFlag = true,
                     WorkType = 1,
                     ItemNo = itemBarcodeDetails.ItemNo,
-                    LotNo = itemBarcodeDetails.LotNo,
+                    LotNo = cgddDetails.BatchNumber,
                     SuppId = itemBarcodeDetails.SuppId,
                     SuppNo = itemBarcodeDetails.SuppNo,
                     DepotCode = mesDepost.DepotCode,
@@ -508,7 +569,8 @@
                     CheckDate = inventoryDetails.CheckDate,
                     CheckRes = inventoryDetails.CheckRes,
                     CheckStates = inventoryDetails.CheckStates,
-                    ReceiveOrgId = inventory.ReceiveOrgId
+                    ReceiveOrgId = inventory.ReceiveOrgId,
+                    DepotId = Convert.ToInt64(depotCode2)
                 }).IgnoreColumns(true).ExecuteCommand();
 
                 // 鎻掑叆 mes_inv_business2 琛�
@@ -546,11 +608,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,
@@ -567,7 +631,11 @@
                 LineK3id = itemBarcodeDetails.LineK3id,
                 ItemId = itemBarcodeDetails.ItemId,
                 BillNo = itemBarcodeDetails.BillNo,
-                DepotId = Convert.ToInt32(depotCode2)
+                DepotId = Convert.ToInt32(depotCode2),
+                OwnerId = cgddDetails.DemandOrg,
+                OwnerType = owner_type,
+                StockOrgId = mesDepost.FSubsidiary,
+                IndepUserCode = user
             }).IgnoreColumns(true).ExecuteCommand();
 
             itemBarcodeDetails.Hbdy ??= 0;

--
Gitblit v1.9.3