using Newtonsoft.Json.Linq;
using ProjectBase.Data.BaseDAL;
using SIMDP.DAL.IDALSQL;
using SIMDP.Model;
using System;
using System.Collections.Generic;
namespace SIMDP.BLL
{
///
/// Plc配置信息
///
public class BlPlcInfo : BaseBLL
{
private IDalPlcInfo dalPlcInfo;
///
/// 构造函数
///
public BlPlcInfo() : base()
{
base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
dalPlcInfo = baseDal as IDalPlcInfo;
dalPlcInfo.OnOperationLog += new OperationLogEventHandler(BlLogOperation.OnOperationLog);
}
///
/// 获取PLC配置信息
///
/// plc id
/// plc名称
///
public List GetActivePLC()
{
string sql = string.Format("SELECT * FROM plc_info where link_type <> 99");
return dalPlcInfo.GetList(sql, null);
}
///
/// 从PLC表中获取扫码枪的IP端口号
///
///
public bool GetScannerParams(string plc_name, out string Ip, out int port)
{
Ip = "";
port = 0;
string sql = $"select top 1 link_config from plc_info where plc_name like '{plc_name}%' ";
string linkconfig = dalPlcInfo.SqlValueList(sql);
if (string.IsNullOrEmpty(linkconfig)) return false;
try
{
ScannerInfo info = new ScannerInfo(linkconfig);
Ip = info.Ip;
port = info.Port;
return true;
}
catch
{
return false;
}
}
internal class ScannerInfo
{
internal ScannerInfo(string json)
{
JObject jObject = JObject.Parse(json);
JToken token = jObject["Ip"];
if (token != null) Ip = token.ToString();
token = jObject["Port"];
if (token != null) Port = Convert.ToInt32(token);
}
internal string Ip { get; set; }
internal int Port { get; set; }
}
}
}