using HH.WCS.Mobox3.DoubleCoin.dispatch;
|
using HH.WCS.Mobox3.DoubleCoin.util;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WCS.Mobox3.DoubleCoin.device
|
{
|
/// <summary>
|
/// 小车读卡器通过TCPServer发送消息存储在这
|
/// </summary>
|
public class ScanCodeHelper
|
{
|
public static Dictionary<string, ScanInfoModel> scanInfoDic = new Dictionary<string, ScanInfoModel>();//内存信息缓存
|
|
/// <summary>
|
/// 校验RFID
|
/// </summary>
|
/// <param name="address"></param>
|
/// <param name="data"></param>
|
/// <returns></returns>
|
public static bool Analysis(string address, string data)
|
{
|
var agvScan = Settings.AgvScanDevices.FirstOrDefault(a => a.ScanAddress == address);
|
if (agvScan != null)
|
{
|
ScanInfoModel scanInfoModel = new ScanInfoModel();
|
scanInfoModel.AgvCode = agvScan.AgvCode;
|
scanInfoModel.AgvAddress = agvScan.ScanAddress;
|
scanInfoModel.RFID = data;//这里要筛选
|
|
if (scanInfoDic.ContainsKey(agvScan.AgvCode))
|
{
|
scanInfoDic[agvScan.AgvCode] = scanInfoModel;
|
}
|
else
|
{
|
scanInfoDic.Add(agvScan.AgvCode, scanInfoModel);
|
}
|
|
return GetRFIDByAgvCode(scanInfoModel.AgvCode, scanInfoModel.RFID);
|
}
|
else
|
{
|
LogHelper.Info("在配置表中未找到该读卡器地址:" + address + "的信息", "TCP");
|
}
|
return false;
|
}
|
|
internal static bool GetRFIDByAgvCode(string agvCode,string RFID)
|
{
|
var db = new SqlHelper<TN_Task>().GetInstance();
|
var task = new TN_Task();
|
task = db.Queryable<TN_Task>().Where(a => a.S_EQ_NO == agvCode && a.N_B_STATE == 2).OrderByDescending(b => b.T_CREATE).First();
|
if (task != null && RFID.Contains(task.S_CNTR_CODE))
|
{
|
LogHelper.Info($"校验成功Agv:{agvCode}容器号:{RFID}");
|
return true;
|
}
|
else
|
{
|
LogHelper.Info($"校验失败Agv:{agvCode}容器号:{RFID}");
|
|
//校验失败就取消任务
|
//var task1 = Task.Run(() =>
|
//{
|
// if (task != null)
|
// {
|
// var res = NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
|
// LogHelper.Info($"AGV校验RFID失败,发送取消任务命令参数6改为2,任务号{task.S_CODE}");
|
// if (res.err_code==0)
|
// {
|
// LogHelper.Info($"AGV校验RFID失败,发送取消任务命令参数6改为2,任务号{task.S_CODE},结果:取消成功");
|
// }
|
// else
|
// {
|
// LogHelper.Info($"AGV校验RFID失败,发送取消任务命令参数6改为2,任务号{task.S_CODE},结果:取消失败:{res.err_msg}");
|
// }
|
// }
|
//});
|
|
return false;
|
}
|
}
|
}
|
|
public class ScanInfoModel
|
{
|
public string AgvCode { get; set; }//agv编号
|
public string AgvAddress { get; set; }//agv读卡器地址
|
public string RFID { get; set; }//agv读卡器上报的RFID,托盘
|
}
|
}
|