天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

355 lines
15 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Net;
using QMAPP.ServicesAgent;
using QMAPP.FJC.Entity;
using System.Configuration;
using QMAPP.WinForm.Common;
using System.Windows.Forms;
namespace QMAPP.WinForm
{
/// <summary>
/// 应用上下文
/// </summary>
public class ClientContext
{
/// <summary>
/// sessionID
/// </summary>
public static string SessionID { get; set; }
/// <summary>
/// 当前加工计数器
/// </summary>
public static int MadeNum = 0;
/// <summary>
/// 登录信息
/// </summary>
public static QMAPP.ServicesAgent.LoginService.LoginInfo LoginInfo { get; set; }
/// <summary>
/// 设备信息
/// </summary>
public static QMAPP.FJC.Entity.Basic.MachineInfo MachineInfo { get; set; }
/// <summary>
/// 班次信息
/// </summary>
public static QMAPP.FJC.Entity.Basic.ProduceShift produceShift { get; set; }
/// <summary>
/// 权限列表
/// </summary>
public static Dictionary<string, FormAuthority> AuthList = new Dictionary<string, FormAuthority>();
/// <summary>
/// 初始化
/// </summary>
public static void Init()
{
//设置sessionID
SessionID = Guid.NewGuid().ToString();
//初始化服务
ServiceAgent.Init();
string locationfile = System.Configuration.ConfigurationManager.AppSettings["loactionfile"];
if (System.IO.File.Exists(locationfile))
{
string machinecode = System.IO.File.ReadAllText(locationfile);
if (!string.IsNullOrEmpty(machinecode.Trim()))
{
//设置ip
QMAPP.FJC.Entity.Basic.MachineInfo searchModel = new QMAPP.FJC.Entity.Basic.MachineInfo();
searchModel.MACHINECODDE = machinecode.Trim();
List<QMAPP.FJC.Entity.Basic.MachineInfo> list = new List<FJC.Entity.Basic.MachineInfo>();
//searchModel.PRODUCELINE = QMAPP.FJC.Entity.EnumGeter.PRODUCELINE.B9.ToString();
//执行查询
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
list = agent.InvokeServiceFunction<List<QMAPP.FJC.Entity.Basic.MachineInfo>>(B9BasicService.MachineInfoBLL_GetAllList.ToString(), searchModel);
if (list.Count > 0)
{
MachineInfo = list[0];
}
}
}
#region 定位设备工位 OLDCODE
/*
//获取设备信息
if (System.Configuration.ConfigurationManager.AppSettings.AllKeys.Contains("ipFlag"))
{
string ipFlag = System.Configuration.ConfigurationManager.AppSettings["ipFlag"].ToString();
if (ipFlag.Equals("0"))//代表没有ip用config中的machinecode来匹配
{
if (System.Configuration.ConfigurationManager.AppSettings.AllKeys.Contains("machineCode"))
{
string machineCode = System.Configuration.ConfigurationManager.AppSettings["machineCode"].ToString();
if (!string.IsNullOrEmpty(machineCode.Trim()))
{
//设置ip
QMAPP.FJC.Entity.Basic.MachineInfo searchModel = new QMAPP.FJC.Entity.Basic.MachineInfo();
searchModel.MACHINECODDE = machineCode.Trim();
List<QMAPP.FJC.Entity.Basic.MachineInfo> list = new List<FJC.Entity.Basic.MachineInfo>();
searchModel.PRODUCELINE = QMAPP.FJC.Entity.EnumGeter.PRODUCELINE.B9.ToString();
//执行查询
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
list = agent.InvokeServiceFunction<List<QMAPP.FJC.Entity.Basic.MachineInfo>>(B9BasicService.MachineInfoBLL_GetAllList.ToString(), searchModel);
if (list.Count > 0)
{
MachineInfo = list[0];
}
}
}
}
else if (ipFlag.Equals("1"))
{
IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipa = ipe.AddressList[1];
string ipAddress = ipa.ToString();
if (!string.IsNullOrEmpty(ipAddress))
{
//设置ip
QMAPP.FJC.Entity.Basic.MachineInfo searchModel = new QMAPP.FJC.Entity.Basic.MachineInfo();
searchModel.IPADDRESS = ipAddress;
List<QMAPP.FJC.Entity.Basic.MachineInfo> list = new List<FJC.Entity.Basic.MachineInfo>();
searchModel.PRODUCELINE = QMAPP.FJC.Entity.EnumGeter.PRODUCELINE.B9.ToString();
//执行查询
QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
list = agent.InvokeServiceFunction<List<QMAPP.FJC.Entity.Basic.MachineInfo>>(B9BasicService.MachineInfoBLL_GetAllList.ToString(), searchModel);
if (list.Count > 0)
{
MachineInfo = list[0];
}
}
}
}
*/
#endregion
//获取班组信息
produceShift = new FJC.Entity.Basic.ProduceShift();
QMAPP.ServicesAgent.ServiceAgent agent1 = ClientContext.GetServiceAgent();
var shift = agent1.InvokeServiceFunction<FJC.Entity.Basic.ProduceShift>(B9BasicService.ProduceShiftBLL_GetWorkingShift.ToString(), MachineInfo != null ? MachineInfo.WORKCENTER_CODE : "");
if (shift != null)
{
produceShift = shift;
}
}
#region 获取服务代理
public static ServicesAgent.ServiceAgent GetServiceAgent()
{
try
{
//创建代理
ServicesAgent.ServiceAgent agent = new ServicesAgent.ServiceAgent();
//设置凭据
agent.ClientCredential = new QMFrameWork.ServiceInterface.CredentialInfo();
if (ClientContext.LoginInfo != null)
agent.ClientCredential.UserID = ClientContext.LoginInfo.UserID;
agent.ClientCredential.CredentialID = ClientContext.SessionID;
return agent;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 获取登录凭据
public static QMFrameWork.ServiceInterface.CredentialInfo GetCredentialInfo()
{
QMFrameWork.ServiceInterface.CredentialInfo credential = new QMFrameWork.ServiceInterface.CredentialInfo();
credential.CredentialID = ClientContext.SessionID;
return credential;
}
/// <summary>
/// 设定用户权限
/// </summary>
/// <param name="MenuName"></param>
/// <param name="c"></param>
public static void SetUserAuth(string MenuName,System.Windows.Forms.Control c)
{
if (AuthList.Count > 0)
{
System.Windows.Forms.Control[] cs = c.Controls.Find("toolStrip1", false);
if (cs.Length > 0)
{
var MenuId = from en
in AuthList
where en.Value.Equals(MenuName)
select en.Key;
var listValues = from en
in AuthList
where en.Key.Substring(0, 5).Equals(MenuId.First().ToString().Substring(0, 5))
select en.Value;
for (int i = 0; i < ((System.Windows.Forms.ToolStrip)cs[0]).Items.Count; i++)
{
//if (listValues.Contains(((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Name))
//{
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Visible = true;
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Enabled = true;
//}
//else
//{
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Visible = false;
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Enabled = false;
//}
}
}
}
}
/// <summary>
/// 设定用户权限
/// </summary>
/// <param name="c"></param>
public static void SetUserAuth(System.Windows.Forms.Form form)
{
System.Windows.Forms.Control[] toolStrips = form.Controls.Find("toolStrip1", false);
var toolstrip = (System.Windows.Forms.ToolStrip)toolStrips.FirstOrDefault();
var authOnform=from auth in AuthList
where auth.Value.Form==form.Name
select auth.Value;
foreach (var auth in authOnform)
{
if(string.IsNullOrWhiteSpace(auth.Button))
{
continue;
}
var controls = form.Controls.Find(auth.Button, true);
if (controls.Length > 0)
{
foreach (var btn in controls)
{
btn.Enabled = auth.HasAuthority || string.Equals(LoginInfo.LoginUserID.ToUpper(), "ADMIN");
btn.Visible = auth.HasAuthority || string.Equals(LoginInfo.LoginUserID.ToUpper(), "ADMIN");
}
continue;
}
if (toolstrip != null)
{
var toolstripitems = toolstrip.Items.Find(auth.Button, true);
if (toolstripitems.Length > 0)
{
foreach (var btn in toolstripitems)
{
btn.Enabled = auth.HasAuthority || string.Equals(LoginInfo.LoginUserID.ToUpper(), "ADMIN");
btn.Visible = auth.HasAuthority || string.Equals(LoginInfo.LoginUserID.ToUpper(), "ADMIN");
}
}
}
}
//if (AuthList.Count > 0)
//{
//
// if (cs.Length > 0)
// {
// var MenuId = from en
// in AuthList
// where en.Value.Equals(MenuName)
// select en.Key;
// var listValues = from en
// in AuthList
// where en.Key.Substring(0, 5).Equals(MenuId.First().ToString().Substring(0, 5))
// select en.Value;
// for (int i = 0; i < ((System.Windows.Forms.ToolStrip)cs[0]).Items.Count; i++)
// {
// if (listValues.Contains(((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Name))
// {
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Visible = true;
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Enabled = true;
// }
// else
// {
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Visible = false;
// ((System.Windows.Forms.ToolStrip)cs[0]).Items[i].Enabled = false;
// }
// }
// }
//}
}
/// <summary>
/// 登录码登录
/// </summary>
/// <param name="passcode"></param>
/// <returns></returns>
public static string CodeLogin(string passcode)
{
if (passcode.StartsWith("<") && passcode.EndsWith(">"))
{
var passport = passcode.Trim('<', '>').Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
if (passport.Length == 2)
{
string userid = passport[0];
string pwd = passport[1];
try
{
QMAPP.ServicesAgent.LoginService.LoginServiceClient _loginClient = new ServicesAgent.LoginService.LoginServiceClient();
pwd = QMFrameWork.Common.Encrypt.DESEncrypt.Decrypt(pwd);
//登录验证
var loginUser = _loginClient.IsLogin(new QMAPP.ServicesAgent.LoginService.LoginInfo { LoginUserID = userid, PassWord = pwd, UserDes = "" }
, ClientContext.GetCredentialInfo());
if (loginUser == null)
{
return "登录码不正确或已过期,请联系管理员更换!";
}
ClientContext.LoginInfo = loginUser;
//打开主窗体
MainForm form = Application.OpenForms["MainForm"] as MainForm; //查找是否打开过Form1窗体
if (form != null) //没打开过
{
form.SetLoginInfo(loginUser);
}
return "登录成功!";
}
catch (System.Security.Cryptography.CryptographicException)
{
return "登录码格式不正确!";
}
catch (System.FormatException)
{
return "登录码格式不正确!";
}
catch (Exception ex)
{
throw ex;
}
}
}
return "";
}
#endregion
/// <summary>
/// OPC服务状态
/// 0:不使用OPC连接
/// 1: OPC连接正常
/// 2: OPC连接断开(发送失败)
/// 3:OPC连接断开(无法接收返回消息或接收超时)
/// 4: 正在连接
/// </summary>
public static int OpcState { get; set; }
}
}