南骏 池
2025-05-27 54f23d618095bf49edc77a45ad489a555701b688
service/Warehouse/InventoryManager.cs
@@ -5,6 +5,10 @@
using NewPdaSqlServer.util;
using SqlSugar;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Dynamic;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.service.Warehouse;
@@ -326,4 +330,85 @@
        return XcslItem;
    }
    public List<dynamic> ExecuteBeginBar(dynamic query)
    {
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        // 增强参数校验
        if (string.IsNullOrEmpty(query.userName?.ToString()))
            throw new ArgumentException("用户账号不能为空", nameof(query.userName));
        if (string.IsNullOrEmpty(query.itemid?.ToString()))
            throw new ArgumentException("物料ID不能为空", nameof(query.itemid));
        var resultList = new List<dynamic>();
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        using (var cmd = new SqlCommand("rpt_BeginBar", conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(new[]
            {
                new SqlParameter("@inUser", SqlDbType.NVarChar, 50) { Value = query.userName },
                new SqlParameter("@inItemId", SqlDbType.NVarChar, 50) { Value = query.itemid },
                new SqlParameter("@isDesign", SqlDbType.Int) { Value = 0 },
                new SqlParameter("@in4", SqlDbType.NVarChar, 20) { Value = query.in4 ?? DBNull.Value },
                new SqlParameter("@in5", SqlDbType.NVarChar, 20) { Value = query.num ?? DBNull.Value }
            });
            try
            {
                conn.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var barcode = reader.GetString(0);
                        // 构建符合方法签名的参数对象
                        var scanQuery = new WarehouseQuery
                        {
                            barcode = barcode,
                            DepotCode = query.sectionCode, // 从原始query获取库位编码
                            userName = query.userName // 从原始query获取用户账号
                        };
                        try
                        {
                            // 调用正式签名方法
                            ScanBarcode(scanQuery);
                            var printData = GetPrintBar(barcode);
                            resultList.Add(printData);
                        }
                        catch (Exception ex)
                        {
                            throw new Exception($"期初条码打印入库存在异常{ex.Message},请重新打印!");
                        }
                    }
                }
                return resultList;
            }
            catch (Exception ex)
            {
                throw new Exception($"生成期初条码失败:{ex.Message}");
            }
        }
    }
    public dynamic GetPrintBar(string barcode)
    {
        var sqlParams = new List<SugarParameter> { new("@barcode", barcode) };
        var sql1 = @"    SELECT TOP 1 C.ITEM_NO,C.item_name,C.item_model,B.OLDQTY as QUANTITY,B.CREATE_DATE, '期初条码' AS BarType,A.ITEM_BARCODE,GETDATE() as print_date
            FROM MES_INV_ITEM_STOCKS A
            LEFT JOIN MES_INV_ITEM_BARCODES B ON A.ITEM_BARCODE = B.ITEM_BARCODE
            LEFT JOIN MES_ITEMS C ON C.item_id = B.ITEM_ID
            WHERE B.ITEM_BARCODE = @barcode";
        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams).First();
        return XcslItem;
    }
}