using HH.WCS.Mobox3.DoubleCoin.dispatch;
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
{
///
/// wms管到作业
///
internal class WMSHelper
{
///
/// 人工手动PDA取消任务:1=发给AGV取消任务
///
///
///
internal static SimpleResult PDACancleTask(CancleTaskInfo model)
{
SimpleResult simpleResult = new SimpleResult();
var db = new SqlHelper().GetInstance();
try
{
if (model.taskNO.Length > 0)
{
var task = db.Queryable().First(a => a.S_CODE == model.taskNO);
if (task != null && task.S_B_STATE != "完成")
{
if (NDCApi.CancelOrder(model.taskNO).err_code == 0)
{
task.S_B_STATE = "错误";
task.N_B_STATE = 4;
if (db.Updateable(task).ExecuteCommand() > 0)
{
simpleResult.resultCode = 0;
simpleResult.resultMsg = $"通知AGV取消该任务号,成功,{model.taskNO}";
LogHelper.Info(simpleResult.resultMsg);
return simpleResult;
}
else
{
simpleResult.resultCode = 4;
simpleResult.resultMsg = $"更新任务状态信息失败{model.taskNO}";
LogHelper.Info(simpleResult.resultMsg);
return simpleResult;
}
}
else
{
simpleResult.resultCode = 1;
simpleResult.resultMsg = $"通知AGV取消该任务号,失败,{model.taskNO}";
LogHelper.Info(simpleResult.resultMsg);
return simpleResult;
}
}
else
{
simpleResult.resultCode = 2;
simpleResult.resultMsg = $"未找到该任务号或该任务号已完成,无需通知AGV取消";
LogHelper.Info(simpleResult.resultMsg);
return simpleResult;
}
}
else
{
simpleResult.resultCode = 3;
simpleResult.resultMsg = $"人工手动PDA取消任务:1=发给AGV取消任务,参数无效";
LogHelper.Info(simpleResult.resultMsg);
return simpleResult;
}
}
catch (Exception ex)
{
simpleResult.resultCode = -1;
simpleResult.resultMsg = $"发生了异常{ex.Message}";
LogHelper.Info(simpleResult.resultMsg);
return simpleResult;
}
}
///
/// 插入操作员信息
///
///
///
///
///
public static void InsertOpInfo(string staff, string type , string cntrCode ="",int qty = 0)
{
try
{
if(string.IsNullOrEmpty(staff))
{
LogHelper.Info($"操作员信息为空,{staff}");
return;
}
var db = new SqlHelper().GetInstance();
var target = new TN_Operator_Info()
{
S_STAFF = staff,
S_SNTR_CODE = cntrCode,
F_QTY = qty,
S_TYPE = type
};
if(db.Insertable(target).ExecuteCommand() > 0)
{
LogHelper.Info($"插入操作员信息成功,{staff}");
}
else
{
LogHelper.Info($"插入操作员信息失败,{staff}");
}
}
catch(Exception ex)
{
LogHelper.Error($"插入操作员信息,发生了异常,{ex.Message}",ex);
}
}
///
/// 将16进制字符串转换为ASCII字符串
///
///
///
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();
}
}
}