杨张扬
2025-06-03 2acc93755ddc56beb46e08b655ec9d94968d829f
满托下线PDA呼叫,容器ID需转换成ASCII字符串
4个文件已修改
46 ■■■■■ 已修改文件
api/ApiHelper.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/Monitor.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
device/TcpServer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wms/WMSHelper.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiHelper.cs
@@ -638,6 +638,16 @@
            LogHelper.Info("触发API:PDA满托下线入库" + JsonConvert.SerializeObject(model), "API");
            try
            {
                if( model.RfId.Length < 16)
                {
                    result.resultCode = 1;
                    result.resultMsg = $"输入的RFID,长度不够,要大于16位";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                model.RfId = WMSHelper.ConvertHexToAscii(model.RfId);
                //该产线的满托下线位置,起点
                var startPoint = Settings.ProductionLines.FirstOrDefault(a => a.PointOut == model.StartLoc);
                if (startPoint != null)//起点存在
@@ -822,7 +832,7 @@
                    }
                    else
                    {
                        result.resultCode = 9;
                        result.resultCode = 12;
                        result.resultMsg = $"此位置:{startPoint.PointOut}已锁住";
                        LogHelper.Info(result.resultMsg);
                        return result;
core/Monitor.cs
@@ -552,6 +552,12 @@
                    db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.EXPIRATION_DAY }).ExecuteCommand();
                }
                targetInM = db.Queryable<TN_InventoryM>().First(a => a.EXPIRATION_DAY > 0 && a.ITEMSTATE == "过期");//已过期的货品,剩余天数改为0
                if (targetInM != null)
                {
                    targetInM.EXPIRATION_DAY = 0;
                    db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.EXPIRATION_DAY }).ExecuteCommand();
                }
                //  同步 TN_DayProDetail
                var curDay = System.DateTime.Now.Date;
device/TcpServer.cs
@@ -113,7 +113,6 @@
                    if (!buffers.Keys.Contains(remote_ip))
                    {
                        buffers.Add(remote_ip, new byte[1024]);
                    }
                    if (!isSend.Keys.Contains(remote_ip))
                    {
wms/WMSHelper.cs
@@ -2,6 +2,7 @@
using HH.WCS.Mobox3.DoubleCoin.models;
using HH.WCS.Mobox3.DoubleCoin.util;
using System;
using System.Text;
using static HH.WCS.Mobox3.DoubleCoin.api.ApiModel;
namespace HH.WCS.Mobox3.DoubleCoin.wms
@@ -122,6 +123,32 @@
            }
        }
        /// <summary>
        /// 将16进制字符串转换为ASCII字符串
        /// </summary>
        /// <param name="hexString"></param>
        /// <returns></returns>
        public static string ConvertHexToAscii(string hexString)
        {
            LogHelper.Info($"将16进制字符串转换为ASCII字符串,转换前:{hexString}");
       
            // 验证输入是否为16位16进制字符串
            if (hexString.Length != 16 || !System.Text.RegularExpressions.Regex.IsMatch(hexString, @"^[0-9A-Fa-f]+$"))
            {
                throw new ArgumentException("输入必须是16位的16进制字符串");
            }
            // 每两位转换一个ASCII字符
            StringBuilder asciiString = new StringBuilder();
            for (int i = 0; i < 16; i += 2)
            {
                string hexPair = hexString.Substring(i, 2);
                byte asciiChar = Convert.ToByte(hexPair, 16);
                asciiString.Append((char)asciiChar);
            }
            LogHelper.Info($"将16进制字符串转换为ASCII字符串,转换后:{asciiString.ToString()}");
            return asciiString.ToString();
        }
    }
}