From 4f8d1da89bc7cf399e6d90d6230ad6c28114443a Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期一, 23 六月 2025 11:20:13 +0800 Subject: [PATCH] 1.采购入库优化 2.采购退货推荐库位优化 --- service/Warehouse/TransferOutManager.cs | 543 ++++++++++++++++++++++++++---------------------------- 1 files changed, 261 insertions(+), 282 deletions(-) diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs index 2788646..06d5955 100644 --- a/service/Warehouse/TransferOutManager.cs +++ b/service/Warehouse/TransferOutManager.cs @@ -1,25 +1,28 @@ -锘縰sing NewPdaSqlServer.DB; +锘縰sing System.Data; +using System.Data.SqlClient; +using MES.Service.Modes; +using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; -using NewPdaSqlServer.util; +using NewPdaSqlServer.entity.Base; using SqlSugar; namespace NewPdaSqlServer.service.Warehouse; /// <summary> -/// 璋冩嫧鍑哄簱绠$悊绫� -/// 璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫 +/// 璋冩嫧鍑哄叆搴撶鐞嗙被 +/// 璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫 /// </summary> -public class TransferOutManager : Repository<TransferOut> +public class TransferOutManager : Repository<MesDbck> { /// <summary> - /// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃 + /// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃 /// </summary> /// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns> public List<string> GetTransferOutNoList() { // 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁 - var transferOutDetails = Db.Queryable<TransferOutDetail>().ToList(); + var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList(); // 浣跨敤LINQ瀵硅幏鍙栫殑鏁版嵁杩涜鍒嗙粍鍜岀瓫閫� // 绛涢�夋潯浠�:鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮褰� @@ -28,28 +31,29 @@ .Select(g => new { pid = g.Key, - sq = g.Sum(x => x.ShNum), // 鐢宠鏁伴噺鍚堣 - ys = g.Sum(x => x.YsNum) // 宸叉壂鏁伴噺鍚堣 + sq = g.Sum(x => x.FQty), // 鐢宠鏁伴噺鍚堣 + ys = g.Sum(x => x.SQty), // 璋冨嚭宸叉壂鏁伴噺鍚堣 + rs = g.Sum(x => x.RQty), // 璋冨叆宸叉壂鏁伴噺鍚堣 }) - .Where(x => (x.sq ?? 0) != (x.ys ?? 0)) + .Where(x => !((x.sq ?? 0) == (x.ys ?? 0) && (x.sq ?? 0) == (x.rs ?? 0))) .Select(x => x.pid) .ToList(); // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙� - var billNos = Db.Queryable<TransferOut>() - .Where(x => result.Contains(x.Guid)) - .Select(x => x.BillNo) + var billNos = Db.Queryable<MesDbck>() + .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1) + .Select(x => x.FBillNo) .ToList(); return billNos; } /// <summary> - /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛� + /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛� /// </summary> /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param> /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns> - public List<TransferOutDetail> GetTransferOutDetailListByBillNo( + public List<ItemDetailModel> GetTransferOutDetailListByBillNo( WarehouseQuery query) { var p_bill_no = query.billNo; @@ -57,25 +61,64 @@ // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏 // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛� // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳 - var result = Db.Queryable<TransferOutDetail, TransferOut, MesItems>( + var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( (b, a, s) => new JoinQueryInfos( - JoinType.Left, b.Pid == a.Guid, - JoinType.Left, b.ItemId == s.Id)) + JoinType.Left, b.Pid == a.Id, + JoinType.Left, b.FMaterialId == s.Id.ToString())) .Where((b, a, s) => - (b.ShNum ?? 0) - (b.YsNum ?? 0) > 0 // 鏈畬鎴愭暟閲忓ぇ浜�0 - && a.BillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� - && a.Status == 1) // 鍗曟嵁宸插鏍� + !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) + && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� + && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� .OrderBy((b, a, s) => s.ItemNo) - .Select((b, a, s) => new TransferOutDetail + .Select((b, a, s) => new ItemDetailModel { ItemNo = s.ItemNo, + ItemName = s.ItemName, ItemModel = s.ItemModel, - ShNum = b.ShNum, // 鐢宠鏁伴噺 - YsNum = b.YsNum, // 宸叉壂鏁伴噺 + FQty = b.FQty, // 鐢宠鏁伴噺 + SQty = b.SQty, // 宸叉壂鏁伴噺 + RQty = b.RQty, // 宸叉壂鏁伴噺 // 淇濈暀鍏朵粬蹇呰瀛楁... - Pid = b.Pid, - ItemId = b.ItemId, - Guid = b.Guid + Pid = b.Pid.ToString(), + FMaterialId = b.FMaterialId, + Id = b.Id.ToString() + }) + .ToList(); + + if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�"); + + return result; + } + + public List<ItemDetailModel> GetDBCKDetal( + WarehouseQuery query) + { + var p_bill_no = query.billNo; + + // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏 + // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛� + // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳 + var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( + (b, a, s) => new JoinQueryInfos( + JoinType.Left, b.Pid == a.Id, + JoinType.Left, b.FMaterialId == s.Id.ToString())) + .Where((b, a, s) => + !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) // 鏈畬鎴愭暟閲忓ぇ浜�0 + && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� + && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� + .OrderBy((b, a, s) => s.ItemNo) + .Select((b, a, s) => new ItemDetailModel + { + ItemNo = s.ItemNo, + ItemName = s.ItemName, + ItemModel = s.ItemModel, + FQty = b.FQty, // 鐢宠鏁伴噺 + SQty = b.SQty, // 宸叉壂鏁伴噺 + RQty = b.RQty, + // 淇濈暀鍏朵粬蹇呰瀛楁... + Pid = b.Pid.ToString(), + FMaterialId = b.FMaterialId, + Id = b.Id.ToString() }) .ToList(); @@ -83,34 +126,24 @@ } /// <summary> - /// 鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊 + /// 鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊 /// </summary> /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param> /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns> - public (WarehouseQuery form, List<TransferOutDetail> items) + public (WarehouseQuery form, List<ItemDetailModel> items) ScanMoveBarcode(WarehouseQuery query) { var p_bill_no = query.billNo; - var c_user = query.userName; var p_item_barcode = query.barcode; - var p_bill_type_id = 300; // 鍗曟嵁绫诲瀷ID - var p_transaction_no = 301; // 浜ゆ槗缂栧彿 - // 楠岃瘉鍗曟嵁鍙� - if (string.IsNullOrEmpty(p_bill_no)) - { - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - } + if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); // 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵�� - var transferOut = Db.Queryable<TransferOut>() - .Where(x => x.BillNo == p_bill_no && x.Status == 1) + var transferOut = Db.Queryable<MesDbck>() + .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1) .First(); - if (transferOut == null) - { - throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�"); - } + if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�"); // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇� var stock = Db.Queryable<MesInvItemStocks>() @@ -118,264 +151,210 @@ && x.Quantity > 0 && !string.IsNullOrEmpty(x.DepotsCode)) .First(); - if (stock == null) - { - throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}"); - } - - // 楠岃瘉浠撳簱涓�鑷存�� - if (stock.DepotsCode != transferOut.InvCode) - { - throw new Exception( - $"鏉$爜搴撳瓨浠撳簱{stock.DepotsCode}鍜岀敵璇蜂粨搴撲笉涓�鑷磠transferOut.InvCode}"); - } + if (stock == null) throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}"); // 鏌ヨ鐗╂枡淇℃伅 var item = Db.Queryable<MesItems>() .Where(x => x.Id == stock.ItemId) .First(); - if (item == null) - { - throw new Exception("鏈壘鍒扮墿鏂�"); - } + if (item == null) throw new Exception("鏈壘鍒扮墿鏂�"); - // 鏌ヨ璋冩嫧鏄庣粏骞堕獙璇� - var detail = Db.Queryable<TransferOutDetail>() - .Where(x => x.ItemId == stock.ItemId && x.Pid == transferOut.Guid) + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("[prc_pda_DBCK]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@barcode_num", SqlDbType.NVarChar, 300), + new("@split_num", SqlDbType.NVarChar, 300), + new("@c_user", query.userName), + new("@p_bill_no", p_bill_no), + new("@p_item_barcode", p_item_barcode), + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + parameters[3].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); + + var barcodeNum = parameters[2].Value.ToString(); + var splitNum = parameters[3].Value.ToString(); + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + query.itemNo = item.ItemNo; + query.Num = Convert.ToDecimal(barcodeNum); + query.Fum = Convert.ToDecimal(splitNum); + + // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 + return (query, GetDBCKDetal(query)); + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + /// <summary> + /// 鎵弿鏉$爜杩涜璋冩嫧鍏ュ簱澶勭悊 + /// </summary> + /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param> + /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns> + public (WarehouseQuery form, List<ItemDetailModel> items) + ScanReceiveBarcode(WarehouseQuery query) + { + var p_bill_no = query.billNo; + var p_item_barcode = query.barcode; + + var barinfo = Db.Queryable<MesInvItemStocks>() + .Where(x => x.ItemBarcode == p_item_barcode) .First(); - if (detail == null) - { - throw new Exception("鏈壘鍒版潯鐮佺墿鏂欑浉搴旂殑璋冩嫧鐢宠"); - } - // 楠岃瘉鏁伴噺鏄惁瓒呭嚭鏈壂鏁伴噺 - if ((detail.ShNum ?? 0) - (detail.YsNum ?? 0) < stock.Quantity) - { - throw new Exception("鏉$爜鏁伴噺澶т簬鐢宠鏈壂鏁伴噺锛岃鎷嗗垎浜嗗啀鎵爜"); - } - - // 浣跨敤浜嬪姟澶勭悊鏁版嵁鏇存柊 - UseTransaction(db => - { - // 鏌ヨ鐜版湁绉诲簱璁板綍 - var existingMove = db.Queryable<MesInvItemMoves>() - .Where(x => x.TaskNo == p_bill_no - && x.TransactionNo == p_transaction_no - && (x.Status ?? 0) == 0) - .First(); + // 楠岃瘉鍗曟嵁鍙� + if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - var commit = 0; // 璁板綍鏇存柊鎿嶄綔娆℃暟 - var c_id = Guid.Empty; + // 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵�� + var transferOut = Db.Queryable<MesDbck>() + .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1) + .First(); + if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�"); - // 澶勭悊绉诲簱涓昏〃璁板綍 - if (existingMove != null) + // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇� + var stock = Db.Queryable<MesDbckDetail>() + .Where(x => x.FMaterialId == barinfo.ItemId.ToString() + && x.FQty > 0 + && !string.IsNullOrEmpty(x.FStockInId) + && !string.IsNullOrEmpty(x.FOwnerInId)) + .First(); + if (stock == null) throw new Exception($"璋冩嫧鏄庣粏涓� 銆愮墿鏂欍�戞垨 銆愯皟鍏ヤ粨搴撱�戞垨銆愯皟鍏ヨ揣涓汇�戜俊鎭笉瀛樺湪锛岃鏍稿锛亄p_item_barcode}"); + + // 鏌ヨ鐗╂枡淇℃伅 + var item = Db.Queryable<MesItems>() + .Where(x => x.Id.ToString() == stock.FMaterialId) + .First(); + if (item == null) throw new Exception("鏈壘鍒扮墿鏂�"); + + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn)) { - // 鏇存柊鐜版湁璁板綍鐨勬渶鍚庝慨鏀逛俊鎭� - commit += db.Updateable<MesInvItemMoves>() - .SetColumns(s => s.LastupdateDate == DateTime.Now) - .SetColumns(s => s.LastupdateBy == c_user) - .Where(s => s.Guid == existingMove.Guid) - .ExecuteCommand(); - - c_id = existingMove.Guid; - } - else - { - // 鏌ヨ鐩稿叧浠撳簱淇℃伅 - var mesDepots = db.Queryable<MesDepots>() - .Where(s => s.DepotCode == transferOut.FromCode) - .First(); - - var invMesDepots = db.Queryable<MesDepots>() - .Where(s => s.DepotCode == transferOut.InvCode) - .First(); - - c_id = Guid.NewGuid(); - - // 鍒涘缓鏂扮殑绉诲簱璁板綍 - var newMove = new MesInvItemMoves + try { - Guid = c_id, - BillNo = BillNo.GetBillNo("DBCKD"), - CreateBy = c_user, - CreateDate = DateTime.Now, - BillTypeId = p_bill_type_id, - TransactionNo = p_transaction_no, - InvDepotSectionsId = mesDepots.DepotId, - // InvDepotSectionsCode = transferOut.FromCode, - // FromDepotsCode = transferOut.InvCode, - FromDepotsId = invMesDepots.DepotId.ToString(), - TaskNo = p_bill_no - }; - commit += db.Insertable(newMove).IgnoreColumns(true) - .ExecuteCommand(); - } + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@barcode_num", SqlDbType.NVarChar, 300), + new("@split_num", SqlDbType.NVarChar, 300), + new("@c_user", query.userName), + new("@p_bill_no", p_bill_no), + new("@p_item_barcode", p_item_barcode), + new("@p_depot_section_code", query.sectionCode), + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + parameters[3].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); - // 鍐欏叆鑰佹潯鐮佷氦鏄撴槑缁� - var business = new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = p_bill_type_id, - TransactionCode = p_transaction_no.ToString(), - BusinessType = -1, - ItemBarcode = p_item_barcode, - ItemNo = item.ItemNo, - LotNo = stock.LotNo, - EpFlag = true, - Quantity = stock.Quantity, - FromInvDepotsCode = stock.DepotsCode, - FromInvDepotSectionsCode = stock.DepotSectionsCode, - ToInvDepotsCode = transferOut.FromCode, - ToInvDepotSectionsCode = stock.DepotSectionsCode, - CreateBy = c_user, - CreateDate = DateTime.Now, - LastupdateBy = c_user, - LastupdateDate = DateTime.Now, - Factory = stock.Factory, - Company = stock.Company, - TaskNo = stock.TaskNo, - BillNo = p_bill_no, - WorkNo = stock.WorkNo, - WorkLine = stock.WorkLine, - SuppNo = stock.SuppNo, - ItemId = stock.ItemId, - EbelnK3id = stock.EbelnK3id, - LineK3id = stock.LineK3id, - // RkDepot = transferOut.RkDepot, - // CkDepot = transferOut.CkDepot - }; + var barcodeNum = parameters[2].Value.ToString(); + var splitNum = parameters[3].Value.ToString(); + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); - commit += db.Insertable(business).IgnoreColumns(true) - .ExecuteCommand(); + query.itemNo = item.ItemNo; + query.Num = Convert.ToDecimal(barcodeNum); + query.Fum = Convert.ToDecimal(splitNum); - // 鍐欏叆鏂版潯鐮佷氦鏄撴槑缁� - var moveDetail = new MesInvItemMovesCDetails - { - Guid = Guid.NewGuid(), - ItemMoveGuid = c_id, - ItemBarcode = p_item_barcode, - CItemCode = stock.CItemCode, - ItemNo = item.ItemNo, - LotNo = stock.LotNo, - Quantity = stock.Quantity, - EpFlag = stock.EpFlag, - CreateBy = c_user, - CreateDate = DateTime.Now, - LastupdateBy = c_user, - LastupdateDate = DateTime.Now, - // CustomerNo = stock.CustomerNo, - TaskNo = stock.TaskNo, - FromDepotsCode = stock.DepotsCode, - FromDepotSectionsCode = stock.DepotSectionsCode, - Factory = stock.Factory, - Company = stock.Company, - InvDepotsCode = transferOut.FromCode, - // InvDepotSectionsCode = p_sectioncode, - IqcStatus = stock.IqcStatus, - Fcar = stock.Fcar, - IndepDate = stock.IndepDate, - VisableSubmit = stock.VisableSubmit, - VisableSubmitBy = stock.VisableSubmitBy, - VisableSubmitDate = stock.VisableSubmitDate, - BoardStyle = stock.BoardStyle, - WorkNo = stock.WorkNo, - WorkLine = stock.WorkLine, - SuppNo = stock.SuppNo, - ItemId = (int)stock.ItemId, - EbelnK3id = stock.EbelnK3id, - LineK3id = stock.LineK3id, - // RkDepot = transferOut.RkDepot, - // CkDepot = transferOut.CkDepot - }; - - commit += db.Insertable(moveDetail).IgnoreColumns(true) - .ExecuteCommand(); - - // 鏇存柊鎴栨彃鍏ュ嚭搴撴槑缁嗚褰� - var outItem = db.Queryable<MesInvItemOutItems>() - .Where(x => x.ItemOutId == c_id && x.ItemId == stock.ItemId) - .First(); - - if (outItem != null) - { - // 鏇存柊鐜版湁璁板綍鐨勬暟閲� - outItem.Quantity += stock.Quantity; - commit += db.Updateable<MesInvItemOutItems>() - .SetColumns(x => x.Quantity == outItem.Quantity) - .Where(x => x.Guid == outItem.Guid) - .ExecuteCommand(); - } - else - { - // 鎻掑叆鏂拌褰� - var newOutItem = new MesInvItemOutItems + // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 + return (query, GetDBCKDetal(query)); + } + catch (Exception ex) { - Guid = Guid.NewGuid(), - ItemOutId = c_id, - ItemId = stock.ItemId, - CreateBy = c_user, - CreateDate = DateTime.Now, - TaskNo = stock.TaskNo, - WorkNo = stock.WorkNo, - WorkLine = stock.WorkLine, - EbelnK3id = (int)stock.EbelnK3id, - LineK3id = (int)stock.LineK3id, - Quantity = stock.Quantity, - // Unit = stock.ItemUnit - }; - - commit += db.Insertable(newOutItem).IgnoreColumns(true) - .ExecuteCommand(); + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } } + } + } - // 鏇存柊璋冩嫧鐢宠宸叉壂鏁伴噺 - detail = db.Queryable<TransferOutDetail>() - .Where(x => x.Guid == detail.Guid) - .First(); - - if (detail != null) + //璋冩嫧鍑哄簱鎷嗗垎 prc_pda_DBCK_CF + public string SplitBarcode(WarehouseQuery query) + { + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn)) { - detail.YsNum = (detail.YsNum ?? 0) + stock.Quantity as int?; - commit += db.Updateable<TransferOutDetail>() - .SetColumns(x => x.YsNum == detail.YsNum) - .Where(x => x.Guid == detail.Guid) - .ExecuteCommand(); + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@c_user", query.userName), + new("@p_bill_no", query.billNo), + new("@p_item_barcode", query.barcode), + new("@NUM", query.Fum), + }; + + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].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(); + } } - - // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� - var totals = db.Queryable<TransferOutDetail, TransferOut>((b, a) => - new JoinQueryInfos(JoinType.Left, b.Pid == a.Guid)) - .Where((b, a) => a.BillNo == p_bill_no) - .Select((b, a) => new { - ShNum = SqlFunc.AggregateSum(b.ShNum), // 鐢宠鎬绘暟閲� - YsNum = SqlFunc.AggregateSum(b.YsNum) // 宸叉壂鎬绘暟閲� - }) - .First(); - - // 濡傛灉鐢宠鏁伴噺绛変簬宸叉壂鏁伴噺锛屾洿鏂板崟鎹畬鎴愮姸鎬� - if (totals.ShNum == totals.YsNum) - { - commit += db.Updateable<TransferOut>() - .SetColumns(x => x.IsWc == 1) - .Where(x => x.BillNo == p_bill_no) - .ExecuteCommand(); - } - - // 鏇存柊杩斿洖鍙傛暟 - query.itemNo = item.ItemNo; - query.Num = stock.Quantity; - - // 楠岃瘉鏇存柊鎿嶄綔鏄惁鍏ㄩ儴鎴愬姛 - if (commit < 4) - { - throw new Exception("鏇存柊澶辫触"); - } - - return commit; - }); - - // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 - return (query, GetTransferOutDetailListByBillNo(query)); + } } } \ No newline at end of file -- Gitblit v1.9.3