using HH.WCS.Mobox3.TSSG.api;
using HH.WCS.Mobox3.TSSG.device;
using HH.WCS.Mobox3.TSSG.dispatch;
using HH.WCS.Mobox3.TSSG.models;
using HH.WCS.Mobox3.TSSG.util;
using HH.WCS.Mobox3.TSSG.wms;
using Newtonsoft.Json;
using NLog;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Threading;
using static HH.WCS.Mobox3.TSSG.api.ApiModel;
namespace HH.WCS.Mobox3.TSSG.process
{
///
/// 设备信号处理,主要是tcp信号,我们做server被动接收信号来处理,根据项目定制的
///
internal class DeviceProcess
{
public static Dictionary lastReceiptTime = new Dictionary();
internal static void Analysis(string data, string ip) {
// 检查是否需要跳过处理
if (lastReceiptTime.TryGetValue(ip, out DateTime lastTime) &&
DateTime.Now < lastTime.AddMinutes(1))
{
return; // 1分钟内重复请求,跳过
}
// 更新接收时间并执行业务逻辑
lastReceiptTime[ip] = DateTime.Now;
LogHelper.Info($"下发入库请求,IP:{ip}", "TSSG");
if (data.Length >= 6) {
//去掉消息头3F 00
data = data.Substring(4);
Console.WriteLine($"{ip}-{data}");
var plc = Settings.deviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault();
Console.WriteLine("plc:" + JsonConvert.SerializeObject(plc));
if (plc != null) {
if (plc.deviceType == 1) {
var db = new SqlHelper