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 { /// /// 小车读卡器通过TCPServer发送消息存储在这 /// public class ScanCodeHelper { public static Dictionary scanInfoDic = new Dictionary();//内存信息缓存 /// /// 校验RFID /// /// /// /// 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().GetInstance(); var task = new TN_Task(); task = db.Queryable().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,托盘 } }