南骏 池
2025-08-19 0cdfda43fa2f992614a1c0f3bd1aee48eac13797
service/Wom/WomdaaManager.cs
@@ -385,7 +385,7 @@
        if (string.IsNullOrEmpty(query.Kbbarcode?.ToString()))
            throw new ArgumentException("卡板条码不允许为空", nameof(query.userName));
        var sql = string.Format(@"SELECT OLDQTY,
        var sql = string.Format(@"SELECT QUANTITY,
       ISNULL((SELECT COUNT(1) FROM MES_INV_ITEM_BARCODES_TBMX WHERE ABOUT_TB_BARCODE = '{0}'), 0) AS YSum,
       DAA001
FROM MES_INV_ITEM_BARCODES A LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid
@@ -1291,4 +1291,219 @@
        }
    }
    /// <summary>
    /// 获取AGV线体列表
    /// </summary>
    /// <param name="unity"></param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    public dynamic GetAgvXt(dynamic unity)
    {
        var sqlParams = new List<SugarParameter> { };
        var sql2 = new StringBuilder(@"SELECT NAME,line_no FROM MES_WORKSHOP_LINE WHERE isAgv = 1 ORDER BY line_no");
        var XtItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
        if (XtItem == null)
        {
            throw new Exception("无对应AGV绑定线体信息!");
        }
        return XtItem;
    }
    /// <summary>
    /// AGV送检
    /// </summary>
    /// <param name="query"></param>
    /// <returns></returns>
    /// <exception cref="ArgumentNullException"></exception>
    /// <exception cref="ArgumentException"></exception>
    /// <exception cref="Exception"></exception>
    public dynamic HandleAGVInspection(dynamic query)
    {
        if (query == null) throw new ArgumentNullException(nameof(query));
        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
            throw new ArgumentException("用户账号不能为空", nameof(query.userAccount));
        if (string.IsNullOrEmpty(query.KbBar?.ToString()))
            throw new ArgumentException("卡板条码不能为空", nameof(query.KbBar));
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("prc_pda_AgvSj", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                var parameters = new SqlParameter[]
                {
                    new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
                    new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
                    new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output },
                    new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }
                };
                cmd.Parameters.AddRange(parameters);
                conn.Open();
                cmd.ExecuteNonQuery();
                var result = new
                {
                    message = parameters[2].Value?.ToString(),
                    status = Convert.ToInt32(parameters[3].Value)
                };
                if (result.status <= 0)
                    throw new Exception(result.message);
                return result;
            }
        }
    }
    public dynamic HandleAGVCall(dynamic query)
    {
        if (query == null) throw new ArgumentNullException(nameof(query));
        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
            throw new ArgumentException("用户账号不能为空", nameof(query.userAccount));
        if (string.IsNullOrEmpty(query.XtNum?.ToString()))
            throw new ArgumentException("线体编号不能为空", nameof(query.XtNum));
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("prc_pda_AgvHj", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                var parameters = new SqlParameter[]
                {
                    new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
                    new("@pi_xtNum", SqlDbType.NVarChar, 100) { Value = query.XtNum },
                    new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output },
                    new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }
                };
                cmd.Parameters.AddRange(parameters);
                conn.Open();
                cmd.ExecuteNonQuery();
                var result = new
                {
                    message = parameters[2].Value?.ToString(),
                    status = Convert.ToInt32(parameters[3].Value)
                };
                if (result.status <= 0)
                    throw new Exception(result.message);
                return result;
            }
        }
    }
    public dynamic HandleAgvJy(dynamic query)
    {
        if (query == null) throw new ArgumentNullException(nameof(query));
        // 参数验证强化
        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
            throw new ArgumentException("用户名不允许为空", nameof(query.userAccount));
        if (string.IsNullOrEmpty(query.KbBar?.ToString()))
            throw new ArgumentException("卡板条码不允许为空", nameof(query.KbBar));
        if (string.IsNullOrEmpty(query.jyz?.ToString()))
            throw new ArgumentException("检验结果不允许为空", nameof(query.jyz));
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("prc_pda_AgvJy", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                // 添加存储过程参数
                SqlParameter[] parameters =
                {
                    new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
                    new("@pi_kbBarcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
                    new("@pi_jyz", SqlDbType.NVarChar, 100) { Value = query.jyz },
                    new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output },
                    new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }
                };
                foreach (var parameter in parameters)
                    cmd.Parameters.Add(parameter);
                conn.Open();
                cmd.ExecuteNonQuery();
                _strMsg = parameters[3].Value?.ToString() ?? "";
                _intSum = parameters[4].Value?.ToString() ?? "-1";
                var result = Convert.ToInt32(_intSum);
                if (result <= 0) throw new Exception(_strMsg);
                return new
                {
                    message = _strMsg,
                    status = result,
                    kbBarcode = query.KbBar
                };
            }
        }
    }
    public dynamic HandleAgvRk(dynamic query)
    {
        if (query == null) throw new ArgumentNullException(nameof(query));
        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
            throw new ArgumentException("用户账号不能为空", nameof(query.userAccount));
        if (string.IsNullOrEmpty(query.KbBar?.ToString()))
            throw new ArgumentException("卡板条码不能为空", nameof(query.KbBar));
        if (string.IsNullOrEmpty(query.Postition?.ToString()))
            throw new ArgumentException("楼层位置不能为空", nameof(query.Postition));
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("prc_pda_AgvRk", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                var parameters = new SqlParameter[]
                {
                    new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
                    new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
                    new("@pi_kb_Postition", SqlDbType.NVarChar, 100) { Value = query.Postition },
                    new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output },
                    new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }
                };
                cmd.Parameters.AddRange(parameters);
                conn.Open();
                cmd.ExecuteNonQuery();
                var result = new
                {
                    message = parameters[3].Value?.ToString(),
                    status = Convert.ToInt32(parameters[4].Value)
                };
                if (result.status <= 0)
                    throw new Exception(result.message);
                return result;
            }
        }
    }
}