wanshenmean
20 小时以前 5bf10c1dafe485d506ec534f98e5220a3b83dd17
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotBarcodeGenerator.cs
@@ -1,36 +1,27 @@
using Masuit.Tools;
using WIDESEAWCS_QuartzJob;
namespace WIDESEAWCS_Tasks
{
    /// <summary>
    /// 机械手条码生成器 - 负责生成托盘条码
    /// 机械手条码读取器 - 负责读取电芯条码
    /// </summary>
    /// <remarks>
    /// 条码格式:前缀(可选)+ 日期(yyyyMMdd)+ 时间(HHmmss)+ 随机数(100-999)
    /// 例如:TRAY20260326093045123
    /// </remarks>
    public static class RobotBarcodeGenerator
    {
        /// <summary>
        /// 生成托盘条码
        /// 读取线体条码
        /// </summary>
        /// <param name="prefix">条码前缀,默认为空字符串,例如 "TRAY"</param>
        /// <returns>生成的条码字符串,格式:前缀+日期+时间+随机数</returns>
        /// <param name="prefix">DB点位,例如 "DB40.990"</param>
        /// <returns>读取到的电芯条码</returns>
        public static string GenerateTrayBarcode(string prefix = "")
        {
            // 获取当前日期,格式化为 yyyyMMdd(8位数字)
            // 例如:20260326
            string datePart = DateTime.Now.ToString("yyyyMMdd");
            // 获取当前时间(时分秒),格式化为 HHmmss(6位数字)
            // 例如:093045 表示 09:30:45
            string timePart = DateTime.Now.ToString("HHmmss");
            // 生成3位随机数,范围 100-999,确保条码唯一性
            // 使用 Random.Shared 获取线程安全的随机数生成器
            string randomPart = Random.Shared.Next(100, 1000).ToString();
            // 组合所有部分:前缀 + 日期 + 时间 + 随机数
            // 如果前缀为空,则直接返回日期+时间+随机数的组合
            return prefix + datePart + timePart + randomPart;
            var device = Storage.Devices.Where(d => d.DeviceName == "A区_一注输送线").FirstOrDefault();
            if (!device.IsNullOrEmpty() && device != null && device.Communicator.IsConnected)
            {
                var trayBarcode = device.Communicator.Read<string>(prefix);
                return trayBarcode;
            }
            return "";
        }
    }
}