From 17ede350f6cc2be9059a08a90e21de79c296648c Mon Sep 17 00:00:00 2001 From: cnf <3200815559@qq.com> Date: 星期四, 14 八月 2025 17:35:03 +0800 Subject: [PATCH] Merge branch 'master' of http://git.gs-mes.com:8080/r/~kyy/LW_PdaService --- service/Warehouse/MesItemBlManager.cs | 112 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 94 insertions(+), 18 deletions(-) diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs index bf74ff4..93e4d24 100644 --- a/service/Warehouse/MesItemBlManager.cs +++ b/service/Warehouse/MesItemBlManager.cs @@ -132,29 +132,36 @@ try { // 璋冪敤瀛樺偍杩囩▼ - var parameters = new List<SqlParameter> - { - new SqlParameter("@c_user", query.userName), - new SqlParameter("@p_bill_no", query.billNo ?? string.Empty), - new SqlParameter("@p_item_barcode", query.barcode), - new SqlParameter("@p_bl_no", query.blNo), - new SqlParameter("@p_type", query.Type), - new SqlParameter("@outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, - new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, - new SqlParameter("@barcode_num", SqlDbType.Decimal) { Direction = ParameterDirection.Output }, - new SqlParameter("@split_num", SqlDbType.Decimal) { Direction = ParameterDirection.Output } - }; + var parameters = new SqlParameter[] + { + new SqlParameter("@C_USER", SqlDbType.NVarChar, 100) { Value = query.userName ?? string.Empty }, + new SqlParameter("@P_BILL_NO", SqlDbType.NVarChar, 50) { Value = query.billNo ?? string.Empty }, + new SqlParameter("@P_ITEM_BARCODE", SqlDbType.NVarChar, 100) { Value = query.barcode ?? string.Empty }, + new SqlParameter("@P_BL_NO", SqlDbType.NVarChar, 100) { Value = query.blNo ?? string.Empty }, + new SqlParameter("@P_TYPE", SqlDbType.NVarChar, 20) { Value = query.Type ?? string.Empty }, + new SqlParameter("@OUT_MSG", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new SqlParameter("@OUT_SUM", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new SqlParameter("@BARCODE_NUM", SqlDbType.Decimal) { + Direction = ParameterDirection.Output, + Precision = 18, + Scale = 10 + }, + new SqlParameter("@SPLIT_NUM", SqlDbType.Decimal) { + Direction = ParameterDirection.Output, + Precision = 18, + Scale = 10 + } + }; // 鎵ц瀛樺偍杩囩▼ - Db.Ado.ExecuteCommand( - "EXEC PRC_PDA_SCBLCL @c_user, @p_bill_no, @p_item_barcode, @p_bl_no, @p_type, @outMsg OUTPUT, @outSum OUTPUT, @barcode_num OUTPUT, @split_num OUTPUT", - parameters.ToArray()); + string procedureName = "PRC_PDA_SCBLCL"; + int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters); // 鑾峰彇杈撳嚭鍙傛暟 outMsg = parameters[5].Value?.ToString() ?? ""; - outSum = Convert.ToInt32(parameters[6].Value); - barcodeNum = Convert.ToDecimal(parameters[7].Value); - splitNum = Convert.ToDecimal(parameters[8].Value); + outSum = parameters[6].Value as int? ?? 0; // 榛樿鍊兼牴鎹渶姹傝皟鏁� + barcodeNum = parameters[7].Value as decimal? ?? 0m; + splitNum = parameters[8].Value as decimal? ?? 0m; // 澶勭悊瀛樺偍杩囩▼杩斿洖鐨勭粨鏋� if (outSum == 2) // 闇�瑕佹媶鍒� @@ -597,6 +604,75 @@ public (bool success, List<MesItemBlDetail> pendingList) SplitBarcode( WarehouseQuery query) { + + // Validate input parameters + if (string.IsNullOrEmpty(query.userName)) + throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); + + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); + + if (string.IsNullOrEmpty(query.barcode)) + throw new Exception("璇锋壂鎻忔潯鐮侊紒"); + + if ((query.Num ?? 0) <= 0) + throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); + + if (string.IsNullOrEmpty(query.blNo)) + throw new Exception("琛ユ枡鍗曞彿涓嶈兘涓虹┖锛�"); + + // Prepare parameters for the stored procedure + var parameters = new List<SugarParameter> +{ + new SugarParameter("@C_USER", query.userName), + new SugarParameter("@P_BILL_NO", query.billNo), + new SugarParameter("@P_ITEM_BARCODE", query.barcode), + new SugarParameter("@P_BL_NO", query.blNo), + new SugarParameter("@P_TYPE", query.Type), + new SugarParameter("@NUM", query.Num), + new SugarParameter("@OUT_MSG", "", System.Data.DbType.String, ParameterDirection.Output), + new SugarParameter("@OUT_SUM", 0, System.Data.DbType.Int32, ParameterDirection.Output), + new SugarParameter("@OUT_CF_BAR", "", System.Data.DbType.String, ParameterDirection.Output) +}; + + // Execute the stored procedure + Db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PDA_SCBLCL_CF", parameters); + + // Get output parameters + var outMsg = parameters.FirstOrDefault(p => p.ParameterName == "@OUT_MSG")?.Value?.ToString(); + var outSum = Convert.ToInt32(parameters.FirstOrDefault(p => p.ParameterName == "@OUT_SUM")?.Value ?? -1); + var outCfBar = parameters.FirstOrDefault(p => p.ParameterName == "@OUT_CF_BAR")?.Value?.ToString(); + + // Handle the result + if (outSum == -1) + { + throw new Exception(outMsg ?? "鎿嶄綔澶辫触"); + } + + if (outSum == 2) + { + // Handle case where barcode needs to be split + // You might want to return the new barcode to the client + } + + // Get pending list for the supplement order + var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) + .Where((a, b) => a.BlNo == query.blNo + && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) + .Select((a, b) => new MesItemBlDetail + { + Bld012 = b.Bld012, + Bld002 = b.Bld002, + Bld003 = b.Bld003, + Bld004 = b.Bld004, + Bld007 = b.Bld007, + Bld008 = b.Bld008 + }) + .ToList(); + + return (outSum == 1, pendingList); + //if (string.IsNullOrEmpty(query.userName)) // throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); -- Gitblit v1.9.3