啊鑫
昨天 00a72fff219241eb5b0405a066cc859d07cf7735
service/Warehouse/MesItemBlManager.cs
@@ -1,13 +1,14 @@
using System.Data;
using System.Data.SqlClient;
using System.Text;
using Masuit.Tools;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.entity.Base;
using NewPdaSqlServer.util;
using SqlSugar;
using DbType = System.Data.DbType;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using DbHelperSQL = NewPdaSqlServer.DB.DbHelperSQL;
namespace NewPdaSqlServer.service.Warehouse;
@@ -28,9 +29,9 @@
            new("@type", query.type),
            new("@dateTime", query.dateTime == "" ? null : query.dateTime),
            new("@lineNo", query.lineNo)
        };
        var sql2 = new StringBuilder(
            "exec prc_pda_itemBl_billNoList @type,@orgId,@dateTime,@lineNo");
        var sql2 = new StringBuilder("exec prc_pda_itemBl_billNoList @type,@orgId,@dateTime,@lineNo");
        var LineInfo = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
@@ -52,9 +53,7 @@
        // 检查补料单是否存在且为生产补料类型
        var mesItemBl = Db.Queryable<MesItemBl>()
            .Where(a =>
                a.BlNo == query.billNo && a.Bl008 == query.Type &&
                a.Bl018 == true)
            .Where(a => a.BlNo == query.billNo && a.Bl008 == query.Type && a.Bl018 == true)
            .First();
        if (mesItemBl == null)
@@ -80,8 +79,7 @@
        //    .ToList();
        //return (mesItemBl.Bl001, blDetails);
        var sql = string.Format(
            @"SELECT c.id as ItemId,c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,A.BLD007 FQty,A.BLD008 SQty,A.BLD007 - A.BLD008 DSQty,
        var sql = string.Format(@"SELECT c.id as ItemId,c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,A.BLD007 FQty,A.BLD008 SQty,A.BLD007 - A.BLD008 DSQty,
       dbo.F_QX_GETRECODEPOTSE(A.bld012,'','','') as RecoKw,D.daa001
fROM MES_ITEM_BL_DETAIL A
         LEFT JOIN MES_ITEM_BL B ON A.MID = B.ID
@@ -134,38 +132,29 @@
            throw new Exception("申请单号不能为空!");
        // 准备调用存储过程的参数
        var outMsg = "";
        var outSum = -1;
        string outMsg = "";
        int outSum = -1;
        decimal barcodeNum = 0;
        decimal splitNum = 0;
        try
        {
            // 调用存储过程
            var parameters = new[]
            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)
                {
    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)
                {
    new SqlParameter("@SPLIT_NUM", SqlDbType.Decimal) {
                    Direction = ParameterDirection.Output,
                    Precision = 18,
                    Scale = 10
@@ -173,9 +162,8 @@
            };
            // 执行存储过程
            var procedureName = "PRC_PDA_SCBLCL";
            var res =
                DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters);
            string procedureName = "PRC_PDA_SCBLCL";
            int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters);
            // 获取输出参数
            outMsg = parameters[5].Value?.ToString() ?? "";
@@ -192,8 +180,7 @@
                query.Num = barcodeNum;
                // 获取待发料明细列表
                var pendingList = Db
                    .Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
                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)
@@ -210,16 +197,15 @@
                return (query, pendingList);
            }
            if (outSum == -1) // 处理失败
            else if (outSum == -1) // 处理失败
            {
                throw new Exception(outMsg);
            if (outSum == 1) // 处理成功
            }
            else if (outSum == 1) // 处理成功
            {
                // 获取最终的待发料明细列表
                var finalPendingList = Db
                    .Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
                        new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
                var finalPendingList = 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
@@ -237,8 +223,10 @@
                query.message = outMsg;
                return (query, finalPendingList);
            }
            else
            {
            throw new Exception("未知的处理结果状态");
            }
        }
        catch (Exception ex)
        {
@@ -262,6 +250,7 @@
    public ProductionPickDto SplitBarcode(
        WarehouseQuery query)
    {
        // Validate input parameters
        if (string.IsNullOrEmpty(query.userName))
            throw new Exception("用户名不能为空!");
@@ -281,33 +270,30 @@
        // Prepare parameters for the stored procedure
        var parameters = new List<SugarParameter>
        {
            new("@C_USER", query.userName),
            new("@P_BILL_NO", query.billNo),
            new("@P_ITEM_BARCODE", query.barcode),
            new("@P_BL_NO", query.blNo),
            new("@P_TYPE", query.Type),
            new("@NUM", query.Num),
            new("@OUT_MSG", "", DbType.String, ParameterDirection.Output),
            new("@OUT_SUM", 0, DbType.Int32, ParameterDirection.Output),
            new("@OUT_CF_BAR", "", DbType.String, ParameterDirection.Output)
    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);
        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();
        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 == -1)
        {
            throw new Exception(outMsg ?? "操作失败");
        }
        // Get pending list for the supplement order
        var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
@@ -350,7 +336,6 @@
        return LineInfo;
    }
    #endregion
    #region 生产超领
@@ -634,7 +619,7 @@
                    ErpAutoid = womdab.Erpid,
                    PbillNo = query.billNo,
                    ItemId = blDetail.Bld012,
                    DepotId = stockBarcode.DepotId.ToString()
                    DepotId = stockBarcode.DepotId.ToString(),
                    // Unit = blDetail.Bld009,
                    // DepotId = stockBarcode.DepotsId
                }).IgnoreColumns(true).ExecuteCommand();
@@ -674,7 +659,7 @@
                ItemId = blDetail.Bld012,
                Unit = blDetail.Bld009,
                DepotId = (int)stockBarcode.DepotId,
                Dabid = womdab.Guid
                Dabid = womdab.Guid,
            }).IgnoreColumns(true).ExecuteCommand();
            // 插入业务流水
@@ -751,8 +736,8 @@
        });
        // 获取最终的待处理列表
        var finalPendingList = Db
            .Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
        var finalPendingList = 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)
@@ -1194,9 +1179,7 @@
        // 检查补料单是否存在且为生产补料类型
        var mesItemBl = Db.Queryable<MesItemBl>()
            .Where(a =>
                a.BlNo == query.billNo && a.Bl008 == query.Type &&
                a.Bl018 == true)
            .Where(a => a.BlNo == query.billNo && a.Bl008 == query.Type && a.Bl018 == true)
            .First();
        if (mesItemBl == null)
@@ -1222,8 +1205,7 @@
        //    .ToList();
        //return (mesItemBl.Bl001, blDetails);
        var sql = string.Format(
            @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,A.BLD007 FQty,A.BLD008 SQty,A.BLD007 - A.BLD008 DSQty,
        var sql = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,A.BLD007 FQty,A.BLD008 SQty,A.BLD007 - A.BLD008 DSQty,
       dbo.F_QX_GETRECODEPOTSE(A.bld012,'','','') as RecoKw,D.daa001
fROM MES_ITEM_BL_DETAIL A
         LEFT JOIN MES_ITEM_BL B ON A.MID = B.ID