From 4db3ba3f84456c27fdd9be76ff76c17101270914 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 24 九月 2025 14:12:48 +0800 Subject: [PATCH] 111 --- service/Warehouse/MesInvItemInCDetailsManager.cs | 1887 ++++++++++++++++++++++++++++------------------------------ 1 files changed, 915 insertions(+), 972 deletions(-) diff --git a/service/Warehouse/MesInvItemInCDetailsManager.cs b/service/Warehouse/MesInvItemInCDetailsManager.cs index c09294b..0fd977c 100644 --- a/service/Warehouse/MesInvItemInCDetailsManager.cs +++ b/service/Warehouse/MesInvItemInCDetailsManager.cs @@ -1,5 +1,4 @@ -锘縰sing Masuit.Tools; -using Masuit.Tools.Models; +锘縰sing Masuit.Tools.Models; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; @@ -8,9 +7,6 @@ using NewPdaSqlServer.util; using Newtonsoft.Json; using SqlSugar; -using System.Data; -using System.Data.SqlClient; -using System.Security.Cryptography; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace NewPdaSqlServer.service.Warehouse; @@ -19,986 +15,933 @@ { //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� - public ItemInBaseModel SaveBarCodes(WarehouseQuery entity) { - ItemInBaseModel res = new ItemInBaseModel(); - string connectionString = DbHelperSQL.strConn; - // 鍙傛暟楠岃瘉 - if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); - if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "搴撲綅缂栧彿涓嶅厑璁镐负绌�"); - if (string.IsNullOrEmpty(entity.barcode)) throw new ArgumentNullException(nameof(entity.barcode), "鏉$爜涓嶅厑璁镐负绌�"); - if (string.IsNullOrEmpty(entity.cgrkType)) throw new ArgumentNullException(nameof(entity.cgrkType), "閲囪喘鍏ュ簱绫诲瀷涓嶅厑璁镐负绌�"); + if (entity == null) + throw new ArgumentNullException(nameof(entity), "鍙傛暟瀵硅薄涓嶈兘涓虹┖"); - using (var conn = new SqlConnection(connectionString)) + if (string.IsNullOrEmpty(entity.userName)) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鑳戒负绌�", nameof(entity.userName)); + + if (string.IsNullOrEmpty(entity.barcode)) + throw new ArgumentException("鏉$爜涓嶈兘涓虹┖", nameof(entity.barcode)); + + string functionName = "閲囪喘鍏ュ簱", fieldName = null, inFieldVal = null; + string user = entity.userName, + sectionCode = entity.sectionCode, + itemBarcode = entity.barcode; + var transactionNo = "101"; + int? billTypeId = 100, num = 0, num2 = 0; + var freeze = 0; + decimal cSyQty = 0; + + if (string.IsNullOrEmpty(sectionCode)) + throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); + + MesInvItemBarcodes itemBarcodeDetails; + try { - using (var cmd = new SqlCommand("[prc_pda_inv_cgrk]", conn)) + itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>() + .Where(it => it.ItemBarcode == itemBarcode) + .First(); + } + catch + { + throw new Exception("鏉$爜涓嶅瓨鍦紝璇锋牳瀵癸紒"); + } + + if (string.IsNullOrEmpty(itemBarcodeDetails.Memo) || itemBarcodeDetails.Memo != "閲囪喘鍏ュ簱") + throw new Exception("姝ゆ潯鐮佷笉灞炰簬鍒拌揣鏉$爜锛屾棤娉曠敤閲囪喘鍏ュ簱锛�"); + + MesInvItemArn inventory; + try + { + inventory = Db.Queryable<MesInvItemArn>() + .Where(it => it.BillNo == itemBarcodeDetails.BillNo && it.Fstatus == true ) + .First(); + } + catch + { + 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(); + + MesInvItemArnDetail inventoryDetails; + try + { + inventoryDetails = Db.Queryable<MesInvItemArnDetail>() + .Where(it => it.Guid == itemBarcodeDetails.AboutGuid) + .First(); + } + catch + { + throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟槑缁嗭紒"); + } + + MesRohInData cgddDetails; + try + { + cgddDetails = Db.Queryable<MesRohInData>() + .Where(it => it.EbelnK3id == inventoryDetails.LineK3id) + .First(); + } + catch + { + throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲閲囪喘璁㈠崟鏄庣粏锛�"); + } + + //鑾峰彇鍒拌揣妫�楠屾槑缁� + var sqlParams = new List<SugarParameter> { new("@dhmxGuid", itemBarcodeDetails.AboutGuid) }; + var sql1 = @"SELECT *FROM v_dhmx WHERE dhmxGuid = @dhmxGuid "; + vDhmx dhjymx; + try + { + dhjymx = Db.Ado.SqlQuery<vDhmx>(sql1, sqlParams).First(); + } + catch + { + throw new Exception("璇ユ潯鐮佹壘涓嶅埌瀵瑰簲鐨勬楠屾槑缁嗭紒"); + } + + //鍒ゅ畾妫�楠岃兘鍚﹀叆搴� + if (dhjymx.CanStore!= 1) + { + throw new Exception($"璇ユ潯鐮佸搴旂殑鏀舵枡鍗曟楠岀粨鏋�:銆恵dhjymx.InspectionResult}銆�,鍒ゅ畾缁撴灉锛氥�恵dhjymx.JudgmentResult}銆戯紝澶勭悊鎰忚锛氥�恵dhjymx.HandlingSuggestion}銆�,鏃犳硶鍏ュ簱"); + } + + string depotCode; + try + { + depotCode = Db.Queryable<MesDepotSections>() + .Where(it => it.DepotSectionCode == sectionCode) + .Select(it => it.DepotGuid) + .First(); + } + catch + { + throw new Exception("搴撲綅缂栫爜 " + sectionCode + " 涓嶅瓨鍦紝璇风‘璁わ紒"); + } + + MesDepots mesDepost = null; + + var checkGuid = UtilityHelper.CheckGuid(depotCode); + if (checkGuid && depotCode != null) + { + try { + mesDepost = Db.Queryable<MesDepots>() + .Where(s => s.Guid == depotCode).First(); + } + catch + { + throw new Exception("搴撲綅缂栫爜 " + sectionCode + " 瀵瑰簲鐨勪粨搴撲笉瀛樺湪锛岃纭锛�"); + } + + // if (depotCode != mesDepost.Guid) + // throw new Exception("鎵弿搴撲綅涓庨噰璐叆搴撳簱浣嶄笉涓�鑷达紒"); + } + else + { + throw new Exception("搴撲綅缂栫爜 " + sectionCode + " 涓嶅瓨鍦紝璇风‘璁わ紒"); + } + + + //num = Db.Queryable<MesInvItemInCDetails>() + // .Where(it => it.ItemBarcode == itemBarcode) + // .Count(); + + //if (num > 0) + // throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚锛岃鏍稿锛�"); + + //num = Db.Queryable<MesInvItemStocks>() + // .Where(it => it.ItemBarcode == itemBarcode) + // .Count(); + + //if (num > 0) + // throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱锛岃鏍稿锛�"); + + 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" // 浜嬪姟绫诲瀷涓庡瓨鍌ㄨ繃绋嬪尮閰� + ); + + if (checkResult == null) + throw new Exception("鍏ュ簱鏍¢獙澶辫触锛氳繑鍥炵粨鏋滀负绌�"); + + if (Convert.ToInt32(checkResult.result) < 1) + throw new Exception($"鍏ュ簱鏍¢獙澶辫触锛歿checkResult.strMsg}"); + + + + //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.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd") + && it.TaskNo == itemBarcodeDetails.BillNo + && it.Status == 0 + && it.TransctionNo == transactionNo + && it.CreateBy == entity.userName + && it.BillTypeId == billTypeId + && it.DepotsId == mesDepost.DepotId) + .Select(it => new + { + it.Guid, + it.BillNo + }) + .ToList() + .FirstOrDefault(); + + var cId = Guid.Empty; + string cBillNo = null; + + if (existingRecord != null) + { + // If record exists, assign values + cId = existingRecord.Guid; + cBillNo = existingRecord.BillNo; + } + else + { + cId = Guid.NewGuid(); + cBillNo = BillNo.GetBillNo("CGRK(閲囪喘鍏ュ簱)"); + + MesSupplier suppNo; try { - conn.Open(); - cmd.CommandType = CommandType.StoredProcedure; - - // 璁剧疆瀛樺偍杩囩▼鍙傛暟 - SqlParameter[] parameters = - { - new SqlParameter("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName }, - new SqlParameter("@pi_barcode", SqlDbType.NVarChar, 100) { Value = entity.barcode.Trim().ToLower() }, - new SqlParameter("@pi_sectionCode", SqlDbType.NVarChar, 30) { Value = entity.sectionCode }, - new SqlParameter("@pi_cgrkType", SqlDbType.NVarChar, 30) { Value = entity.cgrkType }, - new SqlParameter("@po_outMsg", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output }, - new SqlParameter("@po_outSum", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output } - }; - - cmd.Parameters.AddRange(parameters); - cmd.ExecuteNonQuery(); - - // 鑾峰彇杈撳嚭鍙傛暟 - string? outMessage = parameters[4].Value?.ToString(); - string? outSum = parameters[5].Value?.ToString(); - - if (string.IsNullOrEmpty(outMessage) || string.IsNullOrEmpty(outSum)) - throw new InvalidOperationException("瀛樺偍杩囩▼杩斿洖鍙傛暟寮傚父"); - - // 楠岃瘉缁撴灉 - if (!int.TryParse(outSum, out int result) || result <= 0) - throw new InvalidOperationException(outMessage); - - // 璋冭瘯杈撳嚭 - Console.WriteLine($"鏌ヨ鐨勬潯鐮佸��: '{entity.barcode}' (闀垮害: {entity.barcode.Length})"); - - // 浣跨敤鍙傛暟鍖栨煡璇㈠苟蹇界暐澶у皬鍐欙紙閫傜敤浜庢敮鎸佺殑鏁版嵁搴擄級 - var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>() - .Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower()) - .First() ?? throw new InvalidOperationException($"鏈壘鍒版潯鐮� '{entity.barcode}' 鐨勫尮閰嶄俊鎭�"); - - // 璋冭瘯杈撳嚭锛堟鏌ュ�煎拰闀垮害锛� - Console.WriteLine($"鏌ヨ鐨勬潯鐮佸��: '{entity.barcode}' (闀垮害: {entity.barcode.Length})"); - - // 浼樺寲鏌ヨ锛堝幓闄ょ┖鏍煎苟蹇界暐澶у皬鍐欙級 - var MesInvItemInCDetails = Db.Queryable<MesInvItemInCDetails>() - .Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower()) - .First() ?? throw new InvalidOperationException($"鏈壘鍒版潯鐮� '{entity.barcode}' 鐨勫尮閰嶇殑鍏ュ簱淇℃伅"); - - // 浠庡叆搴撴潯鐮佷腑鑾峰彇鏈夋晥鐨処temInId - var cId = MesInvItemInCDetails.ItemInId; // 鍋囪瀛樺湪ItemInId灞炴�� - - // 鏌ヨ鐗╂枡姹囨�绘槑缁� - var sql = string.Format(@" - SELECT - b.Item_No AS ItemNo, - b.Item_Name AS ItemName, - b.Item_Model AS ItemModel, - a.Quantity AS FQty, - b.Item_Id AS FMaterialId, - CONVERT(VARCHAR(36), b.Guid) AS Id - FROM MES_INV_ITEM_IN_C_ITEMS a - LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id - WHERE a.Item_In_Id = '{0}' AND a.Item_Id = '{1}'", cId, itemBarcodeDetails.ItemId); - - res.ItemInDetails = Db.Ado.SqlQuery<dynamic>(sql); - - // 鏌ヨ鍏ュ簱鏉$爜鏄庣粏 - var sql2 = string.Format(@" - SELECT - b.Item_No AS ItemNo, - b.Item_Name AS ItemName, - b.Item_Model AS ItemModel, - a.Quantity AS FQty, - b.Item_Id AS FMaterialId, - CONVERT(VARCHAR(36), a.Guid) AS Id, - a.Depot_Section_Code AS kw, - a.Item_Barcode AS barcode - FROM Mes_Inv_Item_In_C_Details a - LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id - WHERE a.Item_In_Id = '{0}' AND a.Item_Id = '{1}'",cId, itemBarcodeDetails.ItemId); - - res.ItemBarCDetails = Db.Ado.SqlQuery<dynamic>(sql2); - - // 璁剧疆杩斿洖淇℃伅 - res.Message = outMessage; - res.SumQuantity = result; - - return res; + suppNo = db.Queryable<MesSupplier>() + .Where(s => s.Id.ToString() == inventory.SuppId).First(); } - catch (Exception ex) + catch { - - - // 璁板綍寮傚父鏃ュ織锛堝缓璁坊鍔犳棩蹇楄褰曪級 - res.Message = $"鎿嶄綔澶辫触: {ex.Message}"; - res.SumQuantity = -1; - return res; + throw new Exception("鎵句笉鍒板搴旂殑渚涘簲鍟嗕俊鎭紒"); } + + db.Insertable(new MesInvItemIns + { + Guid = cId, + BillNo = cBillNo, + BillTypeId = billTypeId, + InsDate = DateTime.Now, + DepotsId = mesDepost.DepotId, + DepotsCode = mesDepost.DepotCode, + TransctionNo = transactionNo, + SuppId = suppNo.Id.ToString(), + SuppNo = suppNo.SuppNo, + CreateBy = user, + CreateDate = DateTime.Now, + LastupdateBy = user, + LastupdateDate = DateTime.Now, + UrgentFlag = itemBarcodeDetails.UrgentFlag.GetValueOrDefault() ? "1" : "0", + CbillNo = itemBarcodeDetails.BillNo, + Fstatus = 0, + Status = 0, + ReceiveOrgId = inventory.ReceiveOrgId, + InType = "閲囪喘鍏ュ簱", + TaskNo = itemBarcodeDetails.BillNo + //WorkNo = itemBarcodeDetails.WorkNo + }).IgnoreColumns(true).ExecuteCommand(); } - } + + cSyQty = itemBarcodeDetails.Quantity ?? 0; + + if (cSyQty <= 0) + throw new Exception("鏉$爜鏁伴噺鏃犳晥锛岃妫�鏌ユ潯鐮佷俊鎭紒"); + + entity.id = cId.ToString(); + entity.PageIndex = 1; + entity.Limit = 1; + + itemBarcodeDetails.Hbdy ??= 0; + if (itemBarcodeDetails.Hbdy == 1) + { + var details = db.Queryable<MesInvItemArnDetail>() + .Where(d => + d.CbillNo == itemBarcodeDetails.BillNo && + d.Quantity != d.OkRkqty && + d.ItemId == itemBarcodeDetails.ItemId) + .ToList(); + + + foreach (var detail in details) + { + if (cSyQty == 0) break; + + var remainingQty = detail.Quantity - (detail.OkRkqty ?? 0); + if (remainingQty <= cSyQty) + { + // Update detail + db.Updateable<MesInvItemArnDetail>() + .SetColumns(d => new MesInvItemArnDetail + { + OkRkqty = (int)d.Quantity, + IsdepsIn = true + }) + .Where(d => d.Guid == detail.Guid) + .IgnoreColumns(true) + .ExecuteCommand(); + + // Check if already inserted + var count = db.Queryable<MesInvItemInCItems>() + .Where(it => + it.ItemInId == cId && + it.ItemId == detail.ItemId && + it.DepotId == mesDepost.DepotId.ToString() && + 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 + { + ItemInId = cId, + Quantity = remainingQty, + CreateBy = user, + CreateDate = DateTime.Now, + ItemId = detail.ItemId, + DepotCode = mesDepost.DepotCode, + ItemSname = itemBarcodeDetails.ItemSname, + Unit = itemBarcodeDetails.Unit, + Ebeln = detail.Ebeln, + BillNo = cBillNo, + WorkNo = detail.WorkNo, + CbillNo = detail.CbillNo, + WorkLine = detail.WorkLine, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + Remark = itemBarcodeDetails.Memo, + EbelnK3id = detail.EbelnK3id, + LineK3id = detail.LineK3id, + DepotId = mesDepost.DepotId.ToString(), + 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.DepotId == mesDepost.DepotId.ToString() && + 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 + { + ItemInId = cId, + BillNo = cBillNo, + ItemBarcode = itemBarcode, + Quantity = remainingQty, + BarcodeFlag = true, + EpFlag = true, + WorkType = 1, + ItemNo = detail.ItemNo, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + DepotCode = mesDepost.DepotCode, + DepotSectionCode = sectionCode, + ItemSname = itemBarcodeDetails.ItemSname, + Unit = itemBarcodeDetails.Unit, + CreateBy = user, + CreateDate = DateTime.Now, + LastupdateBy = user, + LastupdateDate = DateTime.Now, + Remark = itemBarcodeDetails.Memo, + Ebeln = detail.WorkNo, + WorkNo = detail.WorkNo, + WorkLine = detail.WorkLine, + CbillNo = itemBarcodeDetails.BillNo, + UrgentFlag = detail.UrgentFlag, + BoardStyle = detail.BoardStyle, + TaskNo = detail.WorkNo, + EbelnK3id = detail.EbelnK3id, + LineK3id = detail.LineK3id, + ItemId = detail.ItemId, + ReceiveOrgId = inventory.ReceiveOrgId, + LotNo = cgddDetails.BatchNumber + }).IgnoreColumns(true).ExecuteCommand(); + } + else + { + // Partially fulfill remaining quantity + db.Updateable<MesInvItemArnDetail>() + .SetColumns(d => new MesInvItemArnDetail + { + OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty) + }) + .Where(d => d.Guid == detail.Guid) + .IgnoreColumns(true) + .ExecuteCommand(); + + var count = db.Queryable<MesInvItemInCItems>() + .Where(it => + it.ItemInId == cId && + it.ItemId == detail.ItemId && + it.DepotId == mesDepost.DepotId.ToString() && + it.EbelnK3id == detail.EbelnK3id && + it.LineK3id == detail.LineK3id) + .Count(); + + if (count == 0) + db.Insertable(new MesInvItemInCItems + { + ItemInId = cId, + Quantity = cSyQty, + CreateBy = user, + CreateDate = DateTime.Now, + ItemNo = detail.ItemNo, + DepotCode = mesDepost.DepotCode, + ItemSname = itemBarcodeDetails.ItemSname, + Unit = itemBarcodeDetails.Unit, + Ebeln = detail.WorkNo, + BillNo = cBillNo, + WorkNo = detail.WorkNo, + EbelnLineNo = detail.EbelnLine, + CbillNo = detail.CbillNo, + WorkLine = detail.WorkLine, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + Remark = itemBarcodeDetails.Memo, + EbelnK3id = detail.EbelnK3id, + LineK3id = detail.LineK3id, + ItemId = detail.ItemId, + DepotId = mesDepost.DepotId.ToString() + }).IgnoreColumns(true).ExecuteCommand(); + else + db.Updateable<MesInvItemInCItems>() + .SetColumns(it => + it.Quantity == it.Quantity + cSyQty) + .Where(it => + it.ItemInId == cId && + it.ItemId == detail.ItemId && + it.DepotId == mesDepost.DepotId.ToString() && + it.EbelnK3id == detail.EbelnK3id && + it.LineK3id == detail.LineK3id) + .IgnoreColumns(true) + .ExecuteCommand(); + + db.Insertable(new MesInvItemInCDetails + { + ItemInId = cId, + BillNo = cBillNo, + ItemBarcode = itemBarcode, + Quantity = cSyQty, + BarcodeFlag = true, + EpFlag = true, + WorkType = 1, + ItemNo = detail.ItemNo, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + DepotCode = mesDepost.DepotCode, + DepotSectionCode = sectionCode, + ItemSname = itemBarcodeDetails.ItemSname, + Unit = itemBarcodeDetails.Unit, + CreateBy = user, + CreateDate = DateTime.Now, + LastupdateBy = user, + LastupdateDate = DateTime.Now, + Remark = itemBarcodeDetails.Memo, + Ebeln = detail.WorkNo, + EbelnLineNo = detail.EbelnLine, + WorkNo = detail.WorkNo, + WorkLine = detail.WorkLine, + CbillNo = itemBarcodeDetails.BillNo, + UrgentFlag = detail.UrgentFlag, + BoardStyle = detail.BoardStyle, + TaskNo = detail.WorkNo, + EbelnK3id = detail.EbelnK3id, + LineK3id = detail.LineK3id, + ItemId = detail.ItemId, + ReceiveOrgId = inventory.ReceiveOrgId, + LotNo = cgddDetails.BatchNumber + }).IgnoreColumns(true).ExecuteCommand(); + + cSyQty = 0; // Remaining quantity fulfilled + } + } + + db.Insertable(new MesInvBusiness2 + { + Status = 1, + BillTypeId = billTypeId, + TransactionCode = transactionNo, + BusinessType = 1, + ItemBarcode = itemBarcode, + ItemNo = itemBarcodeDetails.ItemNo, + LotNo = cgddDetails.BatchNumber, + EpFlag = true, + Quantity = itemBarcodeDetails.Quantity, + ToInvDepotsCode = mesDepost.DepotCode, + ToInvDepotSectionsCode = sectionCode, + Description = "閲囪喘鍏ュ簱", + CreateBy = user, + CreateDate = DateTime.Now, + LastupdateBy = user, + LastupdateDate = DateTime.Now, + TaskNo = itemBarcodeDetails.BillNo, + BillNo = cBillNo, + WorkNo = itemBarcodeDetails.WorkNo, + WorkLine = itemBarcodeDetails.WorkLine, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + EbelnK3id = itemBarcodeDetails.EbelnK3id, + LineK3id = itemBarcodeDetails.LineK3id, + ItemId = itemBarcodeDetails.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // Insert into mes_inv_item_stocks + } + 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(it => + it.ItemInId == cId && + it.ItemId == detailone.ItemId && + it.DepotId == mesDepost.DepotId.ToString() && + it.itemDabid == itemBarcodeDetails.AboutGuid.ToString()) + .Count(); + + if (existingCount == 0) + // 涓嶅瓨鍦ㄦ椂鎻掑叆鏂拌褰� + db.Insertable(new MesInvItemInCItems + { + ItemInId = cId, + Quantity = itemBarcodeDetails.Quantity, + CreateBy = user, + CreateDate = DateTime.Now, + ItemNo = itemBarcodeDetails.ItemNo, + DepotCode = mesDepost.DepotCode, + ItemSname = itemBarcodeDetails.ItemSname, + Unit = itemBarcodeDetails.Unit, + Ebeln = itemBarcodeDetails.WorkNo, + BillNo = cBillNo, + WorkNo = itemBarcodeDetails.WorkNo, + EbelnLineNo = itemBarcodeDetails.WorkLine, + CbillNo = itemBarcodeDetails.BillNo, + WorkLine = itemBarcodeDetails.WorkLine, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + Remark = itemBarcodeDetails.Memo, + EbelnK3id = itemBarcodeDetails.EbelnK3id, + LineK3id = itemBarcodeDetails.LineK3id, + ItemId = itemBarcodeDetails.ItemId, + DepotId = mesDepost.DepotId.ToString(), + itemDabid = itemBarcodeDetails.AboutGuid.ToString() + }).IgnoreColumns(true).ExecuteCommand(); + else + // 瀛樺湪鏃舵洿鏂版暟閲� + db.Updateable<MesInvItemInCItems>() + .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 == mesDepost.DepotId.ToString() && + it.itemDabid == itemBarcodeDetails.AboutGuid.ToString()) + //.IgnoreColumns(true) // 淇濈暀 IgnoreColumns + .ExecuteCommand(); + + // 鎻掑叆 mes_inv_item_in_c_details 琛� + db.Insertable(new MesInvItemInCDetails + { + ItemInId = cId, + BillNo = cBillNo, + ItemBarcode = itemBarcode, + Quantity = itemBarcodeDetails.Quantity, + BarcodeFlag = true, + EpFlag = true, + WorkType = 1, + ItemNo = itemBarcodeDetails.ItemNo, + LotNo = cgddDetails.BatchNumber, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + DepotCode = mesDepost.DepotCode, + DepotSectionCode = sectionCode, + ItemSname = itemBarcodeDetails.ItemSname, + Unit = itemBarcodeDetails.Unit, + CreateBy = user, + CreateDate = DateTime.Now, + LastupdateBy = user, + LastupdateDate = DateTime.Now, + Remark = itemBarcodeDetails.Memo, + Ebeln = itemBarcodeDetails.Mblnr, + EbelnLineNo = itemBarcodeDetails.Zeile, + WorkNo = itemBarcodeDetails.WorkNo, + WorkLine = itemBarcodeDetails.WorkLine, + CbillNo = itemBarcodeDetails.BillNo, + UrgentFlag = itemBarcodeDetails.UrgentFlag, + BoardStyle = itemBarcodeDetails.BoardStyle, + TaskNo = itemBarcodeDetails.TaskNo, + EbelnK3id = itemBarcodeDetails.EbelnK3id, + LineK3id = itemBarcodeDetails.LineK3id, + ItemId = itemBarcodeDetails.ItemId, + Ischeck = true, + CheckDate = inventoryDetails.CheckDate, + CheckRes = inventoryDetails.CheckRes, + CheckStates = inventoryDetails.CheckStates, + ReceiveOrgId = inventory.ReceiveOrgId, + DepotId = Convert.ToInt64(mesDepost.DepotId.ToString()) + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆 mes_inv_business2 琛� + db.Insertable(new MesInvBusiness2 + { + Status = 1, + BillTypeId = billTypeId, + TransactionCode = transactionNo, + BusinessType = 1, + ItemBarcode = itemBarcode, + ItemNo = itemBarcodeDetails.ItemNo, + LotNo = itemBarcodeDetails.LotNo, + EpFlag = true, + Quantity = itemBarcodeDetails.Quantity, + FromInvDepotsCode = null, + FromInvDepotSectionsCode = null, + ToInvDepotsCode = mesDepost.DepotCode, + ToInvDepotSectionsCode = sectionCode, + Description = "閲囪喘鍏ュ簱", + CreateBy = user, + CreateDate = DateTime.Now, + LastupdateBy = user, + LastupdateDate = DateTime.Now, + TaskNo = itemBarcodeDetails.TaskNo, + BillNo = cBillNo, + WorkNo = itemBarcodeDetails.WorkNo, + WorkLine = itemBarcodeDetails.WorkLine, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + EbelnK3id = itemBarcodeDetails.EbelnK3id, + LineK3id = itemBarcodeDetails.LineK3id, + ItemId = itemBarcodeDetails.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆 mes_inv_item_stocks 琛� + } + + + + db.Insertable(new MesInvItemStocks + { + TaskNo = itemBarcodeDetails.TaskNo, + ItemBarcode = itemBarcode, + ItemNo = cgddDetails.BatchNumber, + LotNo = itemBarcodeDetails.LotNo, + Quantity = itemBarcodeDetails.Quantity, + DepotsCode = mesDepost.DepotCode, + DepotSectionsCode = sectionCode, + CheckDate = inventoryDetails.CheckDate, + IndepDate = DateTime.Now, + IqcStatus = inventoryDetails.CheckStates, + BoardStyle = itemBarcodeDetails.BoardStyle, + WorkNo = itemBarcodeDetails.WorkNo, + WorkLine = itemBarcodeDetails.WorkLine, + SuppId = itemBarcodeDetails.SuppId, + SuppNo = itemBarcodeDetails.SuppNo, + EbelnK3id = itemBarcodeDetails.EbelnK3id, + LineK3id = itemBarcodeDetails.LineK3id, + ItemId = itemBarcodeDetails.ItemId, + BillNo = itemBarcodeDetails.BillNo, + DepotId = Convert.ToInt32(mesDepost.DepotId), + 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 == itemBarcodeDetails.AboutGuid) + .ExecuteCommand(); + + var first = db + .Queryable<MesInvItemArnDetail>() + .Where(b => + b.Guid == itemBarcodeDetails.AboutGuid) + .Select(b => new + { + TotalQuantity = + SqlFunc.AggregateSum(b.Quantity), + TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) + }) + .First(); + + var TotalQuantity = first.TotalQuantity ?? 0; + var TotalOkRkQty = first.TotalOkRkQty ?? 0; + + if (TotalQuantity == TotalOkRkQty) + db.Updateable<MesInvItemArnDetail>() + .SetColumns(s => s.IsdepsIn == true) + .Where(s => s.Guid == itemBarcodeDetails.AboutGuid) + .ExecuteCommand(); + + + var totalSummary = db.Queryable<MesInvItemArnDetail>() + .InnerJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid) + .Where((b, a) => + a.BillNo == inventory.BillNo && b.ReturnFlag == 0) + .Select((b, a) => new + { + TotalQuantity = SqlFunc.AggregateSum(b.Quantity), + TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) + }) + .First(); + + 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.ItemId == itemBarcodeDetails.ItemId && + it.WorkNo == itemBarcodeDetails.WorkNo && + it.ItemInId == cId) + .Sum(it => it.Quantity); + + var detailSummary = db.Queryable<MesInvItemArnDetail>() + .Where(it => it.Guid == inventoryDetails.Guid) + .Select(it => new + { + TotalComeQty = SqlFunc.AggregateSum(it.Quantity), + TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty) + }) + .First(); + + var comeQty = detailSummary.TotalComeQty ?? 0; + var invQty = detailSummary.TotalInvQty ?? 0; + 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 = $"鐗╂枡{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(invQty); + + return 1; + } + else + { + // Step 1: Check if bill needs to be closed (status update) + var totalSummary = db.Queryable<MesInvItemArnDetail>() + .LeftJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid) + .Where((b, a) => + a.BillNo == inventory.BillNo && b.ReturnFlag == 0) + .Select((b, a) => new + { + TotalQuantity = SqlFunc.AggregateSum(b.Quantity), + TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) + }) + .First(); + + 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.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.Guid == itemBarcodeDetails.AboutGuid) + .Select(it => new + { + TotalComeQty = SqlFunc.AggregateSum(it.Quantity), + TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty) + }) + .First(); + + if (detailSummary == null) + throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟槑缁嗭紒"); + + var comeQty = detailSummary.TotalComeQty ?? 0; + var invQty = detailSummary.TotalInvQty ?? 0; + var diffQty = comeQty - invQty; + + var mesItems = db.Queryable<MesItems>() + .Where(s => s.Id == itemBarcodeDetails.ItemId).First(); + + // Step 5: Combine final result + result.Message = + $" 鏉$爜鏁伴噺:{itemBarcodeDetails.Quantity},鐗╂枡 {mesItems.ItemNo} 鏈鍏ュ簱鎬绘暟锛歿totalCDetailsQuantity} 鎬诲埌 {comeQty} 宸插叆 {invQty} 娆� {diffQty}"; + + + //result.ItemNo = mesItems.ItemNo; + result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); + } + + var mesInvItemInCDetails = + base.GetSingle(it => it.ItemBarcode == entity.barcode); + + 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.ItemInDetails = purchaseInventory.ItemInDetails; + //result.InvItemInCDetails = purchaseInventory.InvItemInCDetails; + + return result; } - - - - //public ItemInBaseModel SaveBarCodes(WarehouseQuery entity) - //{ - // string functionName = "閲囪喘鍏ュ簱", fieldName = null, inFieldVal = null; - // string user = entity.userName, - // sectionCode = entity.sectionCode, - // itemBarcode = entity.barcode; - // var transactionNo = "101"; - // int? billTypeId = 100, num = 0, num2 = 0; - // var freeze = 0; - // decimal cSyQty = 0; - - // if (string.IsNullOrEmpty(sectionCode)) - // throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); - - // var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>() - // .Where(it => it.ItemBarcode == itemBarcode) - // .First(); - - // if (itemBarcodeDetails == null) - // throw new Exception("鏉$爜涓嶅瓨鍦紝璇锋牳瀵癸紒"); - - // if (string.IsNullOrEmpty(itemBarcodeDetails.Memo) || itemBarcodeDetails.Memo != "閲囪喘鍏ュ簱") - // throw new Exception("姝ゆ潯鐮佷笉灞炰簬鍒拌揣鏉$爜锛屾棤娉曠敤閲囪喘鍏ュ簱锛�"); - - // var inventory = Db.Queryable<MesInvItemArn>() - // .Where(it => it.BillNo == itemBarcodeDetails.BillNo && it.Fstatus == true) - // .First(); - - // if (inventory == null) - // 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.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) - // .Select(it => it.DepotGuid) - // .First(); - - // var depotCode2 = Db.Queryable<MesInvItemArn>() - // .Where(it => it.BillNo == itemBarcodeDetails.BillNo) - // .Select(it => it.DepotsId) - // .First(); - - // MesDepots mesDepost = null; - - // var checkGuid = UtilityHelper.CheckGuid(depotCode); - // if (checkGuid && depotCode != null) - // { - // mesDepost = Db.Queryable<MesDepots>() - // .Where(s => s.DepotId.ToString() == depotCode).First(); - - // // if (depotCode != mesDepost.Guid) - // // throw new Exception("鎵弿搴撲綅涓庨噰璐叆搴撳簱浣嶄笉涓�鑷达紒"); - // } - // else - // { - // throw new Exception("搴撲綅缂栫爜 " + sectionCode + " 涓嶅瓨鍦紝璇风‘璁わ紒"); - // } - - - // //num = Db.Queryable<MesInvItemInCDetails>() - // // .Where(it => it.ItemBarcode == itemBarcode) - // // .Count(); - - // //if (num > 0) - // // throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚锛岃鏍稿锛�"); - - // //num = Db.Queryable<MesInvItemStocks>() - // // .Where(it => it.ItemBarcode == itemBarcode) - // // .Count(); - - // //if (num > 0) - // // throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱锛岃鏍稿锛�"); - - // 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" // 浜嬪姟绫诲瀷涓庡瓨鍌ㄨ繃绋嬪尮閰� - // ); - - // if (Convert.ToInt32(checkResult.result) < 1) - // throw new Exception($"鍏ュ簱鏍¢獙澶辫触锛歿checkResult.strMsg}"); - - - - // //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.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd") - // && it.TaskNo == itemBarcodeDetails.BillNo - // && it.Status == 0 - // && it.TransctionNo == transactionNo - // && it.CreateBy == entity.userName - // && it.BillTypeId == billTypeId - // && it.DepotsId == mesDepost.DepotId) - // .Select(it => new - // { - // it.Guid, - // it.BillNo - // }) - // .First(); - - // var cId = Guid.Empty; - // string cBillNo = null; - - // if (existingRecord != null) - // { - // // If record exists, assign values - // cId = existingRecord.Guid; - // cBillNo = existingRecord.BillNo; - // } - // else - // { - // cId = Guid.NewGuid(); - // cBillNo = BillNo.GetBillNo("CGRK(閲囪喘鍏ュ簱)"); - - // var suppNo = db.Queryable<MesSupplier>() - // .Where(s => s.Id.ToString() == inventory.SuppId).First(); - - // db.Insertable(new MesInvItemIns - // { - // Guid = cId, - // BillNo = cBillNo, - // BillTypeId = billTypeId, - // InsDate = DateTime.Now, - // DepotsId = mesDepost.DepotId, - // DepotsCode = mesDepost.DepotCode, - // TransctionNo = transactionNo, - // SuppId = suppNo.Id.ToString(), - // SuppNo = suppNo.SuppNo, - // CreateBy = user, - // CreateDate = DateTime.Now, - // LastupdateBy = user, - // LastupdateDate = DateTime.Now, - // UrgentFlag = itemBarcodeDetails.UrgentFlag.Value - // ? "1" - // : "0", - // CbillNo = itemBarcodeDetails.BillNo, - // Fstatus = 0, - // Status = 0, - // ReceiveOrgId = inventory.ReceiveOrgId, - // InType = "閲囪喘鍏ュ簱", - // TaskNo = itemBarcodeDetails.BillNo - // //WorkNo = itemBarcodeDetails.WorkNo - // }).IgnoreColumns(true).ExecuteCommand(); - // } - - // cSyQty = itemBarcodeDetails.Quantity.Value; - - // entity.id = cId.ToString(); - // entity.PageIndex = 1; - // entity.Limit = 1; - - // itemBarcodeDetails.Hbdy ??= 0; - // if (itemBarcodeDetails.Hbdy == 1) - // { - // var details = db.Queryable<MesInvItemArnDetail>() - // .Where(d => - // d.CbillNo == itemBarcodeDetails.BillNo && - // d.Quantity != d.OkRkqty && - // d.ItemId == itemBarcodeDetails.ItemId) - // .ToList(); - - - // foreach (var detail in details) - // { - // if (cSyQty == 0) break; - - // var remainingQty = detail.Quantity - (detail.OkRkqty ?? 0); - // if (remainingQty <= cSyQty) - // { - // // Update detail - // db.Updateable<MesInvItemArnDetail>() - // .SetColumns(d => new MesInvItemArnDetail - // { - // OkRkqty = (int)d.Quantity, - // IsdepsIn = true - // }) - // .Where(d => d.Guid == detail.Guid) - // .IgnoreColumns(true) - // .ExecuteCommand(); - - // // Check if already inserted - // var count = db.Queryable<MesInvItemInCItems>() - // .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 - // { - // ItemInId = cId, - // Quantity = remainingQty, - // CreateBy = user, - // CreateDate = DateTime.Now, - // ItemId = detail.ItemId, - // DepotCode = mesDepost.DepotCode, - // ItemSname = itemBarcodeDetails.ItemSname, - // Unit = itemBarcodeDetails.Unit, - // Ebeln = detail.Ebeln, - // BillNo = cBillNo, - // WorkNo = detail.WorkNo, - // CbillNo = detail.CbillNo, - // WorkLine = detail.WorkLine, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // Remark = itemBarcodeDetails.Memo, - // EbelnK3id = detail.EbelnK3id, - // 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.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 - // { - // ItemInId = cId, - // BillNo = cBillNo, - // ItemBarcode = itemBarcode, - // Quantity = remainingQty, - // BarcodeFlag = true, - // EpFlag = true, - // WorkType = 1, - // ItemNo = detail.ItemNo, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // DepotCode = mesDepost.DepotCode, - // DepotSectionCode = sectionCode, - // ItemSname = itemBarcodeDetails.ItemSname, - // Unit = itemBarcodeDetails.Unit, - // CreateBy = user, - // CreateDate = DateTime.Now, - // LastupdateBy = user, - // LastupdateDate = DateTime.Now, - // Remark = itemBarcodeDetails.Memo, - // Ebeln = detail.WorkNo, - // WorkNo = detail.WorkNo, - // WorkLine = detail.WorkLine, - // CbillNo = itemBarcodeDetails.BillNo, - // UrgentFlag = detail.UrgentFlag, - // BoardStyle = detail.BoardStyle, - // TaskNo = detail.WorkNo, - // EbelnK3id = detail.EbelnK3id, - // LineK3id = detail.LineK3id, - // ItemId = detail.ItemId, - // ReceiveOrgId = inventory.ReceiveOrgId, - // LotNo = cgddDetails.BatchNumber - // }).IgnoreColumns(true).ExecuteCommand(); - // } - // else - // { - // // Partially fulfill remaining quantity - // db.Updateable<MesInvItemArnDetail>() - // .SetColumns(d => new MesInvItemArnDetail - // { - // OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty) - // }) - // .Where(d => d.Guid == detail.Guid) - // .IgnoreColumns(true) - // .ExecuteCommand(); - - // var count = db.Queryable<MesInvItemInCItems>() - // .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, - // Quantity = cSyQty, - // CreateBy = user, - // CreateDate = DateTime.Now, - // ItemNo = detail.ItemNo, - // DepotCode = mesDepost.DepotCode, - // ItemSname = itemBarcodeDetails.ItemSname, - // Unit = itemBarcodeDetails.Unit, - // Ebeln = detail.WorkNo, - // BillNo = cBillNo, - // WorkNo = detail.WorkNo, - // EbelnLineNo = detail.EbelnLine, - // CbillNo = detail.CbillNo, - // WorkLine = detail.WorkLine, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // Remark = itemBarcodeDetails.Memo, - // EbelnK3id = detail.EbelnK3id, - // LineK3id = detail.LineK3id, - // 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.DepotId == depotCode2 && - // it.EbelnK3id == detail.EbelnK3id && - // it.LineK3id == detail.LineK3id) - // .IgnoreColumns(true) - // .ExecuteCommand(); - - // db.Insertable(new MesInvItemInCDetails - // { - // ItemInId = cId, - // BillNo = cBillNo, - // ItemBarcode = itemBarcode, - // Quantity = cSyQty, - // BarcodeFlag = true, - // EpFlag = true, - // WorkType = 1, - // ItemNo = detail.ItemNo, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // DepotCode = mesDepost.DepotCode, - // DepotSectionCode = sectionCode, - // ItemSname = itemBarcodeDetails.ItemSname, - // Unit = itemBarcodeDetails.Unit, - // CreateBy = user, - // CreateDate = DateTime.Now, - // LastupdateBy = user, - // LastupdateDate = DateTime.Now, - // Remark = itemBarcodeDetails.Memo, - // Ebeln = detail.WorkNo, - // EbelnLineNo = detail.EbelnLine, - // WorkNo = detail.WorkNo, - // WorkLine = detail.WorkLine, - // CbillNo = itemBarcodeDetails.BillNo, - // UrgentFlag = detail.UrgentFlag, - // BoardStyle = detail.BoardStyle, - // TaskNo = detail.WorkNo, - // EbelnK3id = detail.EbelnK3id, - // LineK3id = detail.LineK3id, - // ItemId = detail.ItemId, - // ReceiveOrgId = inventory.ReceiveOrgId, - // LotNo = cgddDetails.BatchNumber - // }).IgnoreColumns(true).ExecuteCommand(); - - // cSyQty = 0; // Remaining quantity fulfilled - // } - // } - - // db.Insertable(new MesInvBusiness2 - // { - // Status = 1, - // BillTypeId = billTypeId, - // TransactionCode = transactionNo, - // BusinessType = 1, - // ItemBarcode = itemBarcode, - // ItemNo = itemBarcodeDetails.ItemNo, - // LotNo = cgddDetails.BatchNumber, - // EpFlag = true, - // Quantity = itemBarcodeDetails.Quantity, - // ToInvDepotsCode = mesDepost.DepotCode, - // ToInvDepotSectionsCode = sectionCode, - // Description = "閲囪喘鍏ュ簱", - // CreateBy = user, - // CreateDate = DateTime.Now, - // LastupdateBy = user, - // LastupdateDate = DateTime.Now, - // TaskNo = itemBarcodeDetails.BillNo, - // BillNo = cBillNo, - // WorkNo = itemBarcodeDetails.WorkNo, - // WorkLine = itemBarcodeDetails.WorkLine, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // EbelnK3id = itemBarcodeDetails.EbelnK3id, - // LineK3id = itemBarcodeDetails.LineK3id, - // ItemId = itemBarcodeDetails.ItemId - // }).IgnoreColumns(true).ExecuteCommand(); - - // // Insert into mes_inv_item_stocks - // } - // 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(it => - // it.ItemInId == cId && - // it.ItemId == detailone.ItemId && - // it.DepotId == depotCode2 && - // it.itemDabid == itemBarcodeDetails.AboutGuid.ToString()) - // .Count(); - - // if (existingCount == 0) - // // 涓嶅瓨鍦ㄦ椂鎻掑叆鏂拌褰� - // db.Insertable(new MesInvItemInCItems - // { - // ItemInId = cId, - // Quantity = itemBarcodeDetails.Quantity, - // CreateBy = user, - // CreateDate = DateTime.Now, - // ItemNo = itemBarcodeDetails.ItemNo, - // DepotCode = mesDepost.DepotCode, - // ItemSname = itemBarcodeDetails.ItemSname, - // Unit = itemBarcodeDetails.Unit, - // Ebeln = itemBarcodeDetails.WorkNo, - // BillNo = cBillNo, - // WorkNo = itemBarcodeDetails.WorkNo, - // EbelnLineNo = itemBarcodeDetails.WorkLine, - // CbillNo = itemBarcodeDetails.BillNo, - // WorkLine = itemBarcodeDetails.WorkLine, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // Remark = itemBarcodeDetails.Memo, - // EbelnK3id = itemBarcodeDetails.EbelnK3id, - // LineK3id = itemBarcodeDetails.LineK3id, - // ItemId = itemBarcodeDetails.ItemId, - // DepotId = depotCode2, - // itemDabid = itemBarcodeDetails.AboutGuid.ToString() - // }).IgnoreColumns(true).ExecuteCommand(); - // else - // // 瀛樺湪鏃舵洿鏂版暟閲� - // db.Updateable<MesInvItemInCItems>() - // .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 - // { - // ItemInId = cId, - // BillNo = cBillNo, - // ItemBarcode = itemBarcode, - // Quantity = itemBarcodeDetails.Quantity, - // BarcodeFlag = true, - // EpFlag = true, - // WorkType = 1, - // ItemNo = itemBarcodeDetails.ItemNo, - // LotNo = cgddDetails.BatchNumber, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // DepotCode = mesDepost.DepotCode, - // DepotSectionCode = sectionCode, - // ItemSname = itemBarcodeDetails.ItemSname, - // Unit = itemBarcodeDetails.Unit, - // CreateBy = user, - // CreateDate = DateTime.Now, - // LastupdateBy = user, - // LastupdateDate = DateTime.Now, - // Remark = itemBarcodeDetails.Memo, - // Ebeln = itemBarcodeDetails.Mblnr, - // EbelnLineNo = itemBarcodeDetails.Zeile, - // WorkNo = itemBarcodeDetails.WorkNo, - // WorkLine = itemBarcodeDetails.WorkLine, - // CbillNo = itemBarcodeDetails.BillNo, - // UrgentFlag = itemBarcodeDetails.UrgentFlag, - // BoardStyle = itemBarcodeDetails.BoardStyle, - // TaskNo = itemBarcodeDetails.TaskNo, - // EbelnK3id = itemBarcodeDetails.EbelnK3id, - // LineK3id = itemBarcodeDetails.LineK3id, - // ItemId = itemBarcodeDetails.ItemId, - // Ischeck = true, - // CheckDate = inventoryDetails.CheckDate, - // CheckRes = inventoryDetails.CheckRes, - // CheckStates = inventoryDetails.CheckStates, - // ReceiveOrgId = inventory.ReceiveOrgId, - // DepotId = Convert.ToInt64(depotCode2) - // }).IgnoreColumns(true).ExecuteCommand(); - - // // 鎻掑叆 mes_inv_business2 琛� - // db.Insertable(new MesInvBusiness2 - // { - // Status = 1, - // BillTypeId = billTypeId, - // TransactionCode = transactionNo, - // BusinessType = 1, - // ItemBarcode = itemBarcode, - // ItemNo = itemBarcodeDetails.ItemNo, - // LotNo = itemBarcodeDetails.LotNo, - // EpFlag = true, - // Quantity = itemBarcodeDetails.Quantity, - // FromInvDepotsCode = null, - // FromInvDepotSectionsCode = null, - // ToInvDepotsCode = mesDepost.DepotCode, - // ToInvDepotSectionsCode = sectionCode, - // Description = "閲囪喘鍏ュ簱", - // CreateBy = user, - // CreateDate = DateTime.Now, - // LastupdateBy = user, - // LastupdateDate = DateTime.Now, - // TaskNo = itemBarcodeDetails.TaskNo, - // BillNo = cBillNo, - // WorkNo = itemBarcodeDetails.WorkNo, - // WorkLine = itemBarcodeDetails.WorkLine, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // EbelnK3id = itemBarcodeDetails.EbelnK3id, - // LineK3id = itemBarcodeDetails.LineK3id, - // ItemId = itemBarcodeDetails.ItemId - // }).IgnoreColumns(true).ExecuteCommand(); - - // // 鎻掑叆 mes_inv_item_stocks 琛� - // } - - - - // db.Insertable(new MesInvItemStocks - // { - // TaskNo = itemBarcodeDetails.TaskNo, - // ItemBarcode = itemBarcode, - // ItemNo = cgddDetails.BatchNumber, - // LotNo = itemBarcodeDetails.LotNo, - // Quantity = itemBarcodeDetails.Quantity, - // DepotsCode = mesDepost.DepotCode, - // DepotSectionsCode = sectionCode, - // CheckDate = inventoryDetails.CheckDate, - // IndepDate = DateTime.Now, - // IqcStatus = inventoryDetails.CheckStates, - // BoardStyle = itemBarcodeDetails.BoardStyle, - // WorkNo = itemBarcodeDetails.WorkNo, - // WorkLine = itemBarcodeDetails.WorkLine, - // SuppId = itemBarcodeDetails.SuppId, - // SuppNo = itemBarcodeDetails.SuppNo, - // EbelnK3id = itemBarcodeDetails.EbelnK3id, - // LineK3id = itemBarcodeDetails.LineK3id, - // ItemId = itemBarcodeDetails.ItemId, - // 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 == itemBarcodeDetails.AboutGuid) - // .ExecuteCommand(); - - // var first = db - // .Queryable<MesInvItemArnDetail>() - // .Where(b => - // b.Guid == itemBarcodeDetails.AboutGuid) - // .Select(b => new - // { - // TotalQuantity = - // SqlFunc.AggregateSum(b.Quantity), - // TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) - // }) - // .First(); - - // var TotalQuantity = first.TotalQuantity ?? 0; - // var TotalOkRkQty = first.TotalOkRkQty ?? 0; - - // if (TotalQuantity == TotalOkRkQty) - // db.Updateable<MesInvItemArnDetail>() - // .SetColumns(s => s.IsdepsIn == true) - // .Where(s => s.Guid == itemBarcodeDetails.AboutGuid) - // .ExecuteCommand(); - - - // var totalSummary = db.Queryable<MesInvItemArnDetail>() - // .InnerJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid) - // .Where((b, a) => - // a.BillNo == inventory.BillNo && b.ReturnFlag == 0) - // .Select((b, a) => new - // { - // TotalQuantity = SqlFunc.AggregateSum(b.Quantity), - // TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) - // }) - // .First(); - - // 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.ItemId == itemBarcodeDetails.ItemId && - // it.WorkNo == itemBarcodeDetails.WorkNo && - // it.ItemInId == cId) - // .Sum(it => it.Quantity); - - // var detailSummary = db.Queryable<MesInvItemArnDetail>() - // .Where(it => it.Guid == inventoryDetails.Guid) - // .Select(it => new - // { - // TotalComeQty = SqlFunc.AggregateSum(it.Quantity), - // TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty) - // }) - // .First(); - - // var comeQty = detailSummary.TotalComeQty ?? 0; - // var invQty = detailSummary.TotalInvQty ?? 0; - // 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 = $"鐗╂枡{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(invQty); - - // return 1; - // } - // else - // { - // // Step 1: Check if bill needs to be closed (status update) - // var totalSummary = db.Queryable<MesInvItemArnDetail>() - // .LeftJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid) - // .Where((b, a) => - // a.BillNo == inventory.BillNo && b.ReturnFlag == 0) - // .Select((b, a) => new - // { - // TotalQuantity = SqlFunc.AggregateSum(b.Quantity), - // TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) - // }) - // .First(); - - // 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.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.Guid == itemBarcodeDetails.AboutGuid) - // .Select(it => new - // { - // TotalComeQty = SqlFunc.AggregateSum(it.Quantity), - // TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty) - // }) - // .First(); - - // if (detailSummary == null) - // throw new Exception("姝ゆ潯鐮佹壘涓嶅埌瀵瑰簲鏀惰揣鍗曟槑缁嗭紒"); - - // var comeQty = detailSummary.TotalComeQty ?? 0; - // var invQty = detailSummary.TotalInvQty ?? 0; - // var diffQty = comeQty - invQty; - - // var mesItems = db.Queryable<MesItems>() - // .Where(s => s.Id == itemBarcodeDetails.ItemId).First(); - - // // Step 5: Combine final result - // result.Message = - // $" 鏉$爜鏁伴噺:{itemBarcodeDetails.Quantity},鐗╂枡 {mesItems.ItemNo} 鏈鍏ュ簱鎬绘暟锛歿totalCDetailsQuantity} 鎬诲埌 {comeQty} 宸插叆 {invQty} 娆� {diffQty}"; - - - // //result.ItemNo = mesItems.ItemNo; - // result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); - // } - - // var mesInvItemInCDetails = - // base.GetSingle(it => it.ItemBarcode == entity.barcode); - - // 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.ItemInDetails = purchaseInventory.ItemInDetails; - // //result.InvItemInCDetails = purchaseInventory.InvItemInCDetails; - - // return result; - //} public ItemInBaseModel getPurchaseInventory(WarehouseQuery query) { -- Gitblit v1.9.3