From 4ce0b8806c741778eea9d36f8089ceea37280e42 Mon Sep 17 00:00:00 2001 From: 况洋洋 <3283105747@qq.com> Date: 星期四, 10 七月 2025 18:26:43 +0800 Subject: [PATCH] 采购入库新增入库类型、代码转存储过程 --- service/Warehouse/MesInvItemInCDetailsManager.cs | 1846 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 957 insertions(+), 889 deletions(-) diff --git a/service/Warehouse/MesInvItemInCDetailsManager.cs b/service/Warehouse/MesInvItemInCDetailsManager.cs index 8749729..574f36f 100644 --- a/service/Warehouse/MesInvItemInCDetailsManager.cs +++ b/service/Warehouse/MesInvItemInCDetailsManager.cs @@ -10,6 +10,7 @@ using SqlSugar; using System.Data; using System.Data.SqlClient; +using System.Security.Cryptography; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace NewPdaSqlServer.service.Warehouse; @@ -19,917 +20,984 @@ //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� - // public ItemInBaseModel SaveBarCodes(WarehouseQuery entity) - // { - // var _strMsg = ""; - // var _intSum = ""; - // using (var conn = new SqlConnection(DbHelperSQL.strConn)) - // { - // if (entity.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); - // if (entity.sectionCode.IsNullOrEmpty()) throw new Exception("搴撲綅缂栧彿涓嶅厑璁镐负绌�"); - // if (entity.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�"); - // if (entity.cgrkType.IsNullOrEmpty()) throw new Exception("閲囪喘鍏ュ簱绫诲瀷涓嶅厑璁镐负绌�"); - - // using (var cmd = new SqlCommand("[prc_pda_inv_cgrk]", conn)) - // { - // try - // { - // conn.Open(); - // cmd.CommandType = CommandType.StoredProcedure; - // SqlParameter[] parameters = - // { - // new("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName }, - // new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = entity.barcode }, - // new("@pi_cgrkType", SqlDbType.NVarChar, 30) { Value = entity.cgrkType }, - // new("@po_outMsg", SqlDbType.NVarChar, 300), - // new("@po_outSum", SqlDbType.NVarChar, 300) - //}; - - // foreach (var parameter in parameters) - // cmd.Parameters.Add(parameter); - // cmd.ExecuteNonQuery(); - // _strMsg = parameters[4].Value.ToString(); - // _intSum = parameters[5].Value.ToString(); - - // var result = Convert.ToInt32(_intSum); - // if (result <= 0) throw new Exception(_strMsg); - - // return _strMsg; - // } - // catch (Exception ex) - // { - // throw new Exception(ex.Message); - // } - // finally - // { - // conn.Close(); - // } - // } - // } - // } - 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; + ItemInBaseModel res = new ItemInBaseModel(); + string connectionString = DbHelperSQL.strConn; - if (string.IsNullOrEmpty(sectionCode)) - throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); + // 鍙傛暟楠岃瘉 + 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), "閲囪喘鍏ュ簱绫诲瀷涓嶅厑璁镐负绌�"); - 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) + using (var conn = new SqlConnection(connectionString)) { - 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) + using (var cmd = new SqlCommand("[prc_pda_inv_cgrk]", conn)) { - // 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 + try { - 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(); - } + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; - 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) + // 璁剧疆瀛樺偍杩囩▼鍙傛暟 + SqlParameter[] parameters = { - // Update detail - db.Updateable<MesInvItemArnDetail>() - .SetColumns(d => new MesInvItemArnDetail - { - OkRkqty = (int)d.Quantity, - IsdepsIn = true - }) - .Where(d => d.Guid == detail.Guid) - .IgnoreColumns(true) - .ExecuteCommand(); + 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 } + }; - // 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(); + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); - cSyQty -= remainingQty.Value; + // 鑾峰彇杈撳嚭鍙傛暟 + string? outMessage = parameters[4].Value?.ToString(); + string? outSum = parameters[5].Value?.ToString(); - 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(); + if (string.IsNullOrEmpty(outMessage) || string.IsNullOrEmpty(outSum)) + throw new InvalidOperationException("瀛樺偍杩囩▼杩斿洖鍙傛暟寮傚父"); - // 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(); + // 楠岃瘉缁撴灉 + if (!int.TryParse(outSum, out int result) || result <= 0) + throw new InvalidOperationException(outMessage); - 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(); + // 璋冭瘯杈撳嚭 + Console.WriteLine($"鏌ヨ鐨勬潯鐮佸��: '{entity.barcode}' (闀垮害: {entity.barcode.Length})"); - 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(); + // 浣跨敤鍙傛暟鍖栨煡璇㈠苟蹇界暐澶у皬鍐欙紙閫傜敤浜庢敮鎸佺殑鏁版嵁搴擄級 + var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>() + .Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower()) + .First() ?? throw new InvalidOperationException($"鏈壘鍒版潯鐮� '{entity.barcode}' 鐨勫尮閰嶄俊鎭�"); - 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(); + // 璋冭瘯杈撳嚭锛堟鏌ュ�煎拰闀垮害锛� + Console.WriteLine($"鏌ヨ鐨勬潯鐮佸��: '{entity.barcode}' (闀垮害: {entity.barcode.Length})"); - cSyQty = 0; // Remaining quantity fulfilled - } + // 浼樺寲鏌ヨ锛堝幓闄ょ┖鏍煎苟蹇界暐澶у皬鍐欙級 + 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; } - - db.Insertable(new MesInvBusiness2 + catch (Exception ex) { - 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 + + // 璁板綍寮傚父鏃ュ織锛堝缓璁坊鍔犳棩蹇楄褰曪級 + res.Message = $"鎿嶄綔澶辫触: {ex.Message}"; + return res; + } } - 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 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