南骏 池
2025-05-27 54f23d618095bf49edc77a45ad489a555701b688
1.起初条码pda生成自动入库,无线打印条码。
已修改2个文件
112 ■■■■■ 文件已修改
Controllers/Warehouse/InventoryController.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/InventoryManager.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/InventoryController.cs
@@ -1,6 +1,7 @@
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.service.@base;
using NewPdaSqlServer.service.Warehouse;
using NewPdaSqlServer.util;
@@ -11,6 +12,8 @@
public class InventoryController : ControllerBase
{
    private readonly InventoryManager m = new();
    private readonly MesPrintMangeer _mCf = new();
    /// <summary>
    ///     扫描库位条码的控制器方法
@@ -128,4 +131,28 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("printBeginBar")]
    public ResponseResult PrintBeginBar([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = new ExpandoObject();
            resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
            //var scanResult = m.BarCF(unity);
            resultInfos.tbBillList.cfBarInfo = m.ExecuteBeginBar(query);
            //resultInfos.tbBillList = m.ExecuteBeginBar(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
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;
    }
}