ldj/winform/main.cs

642 lines
23 KiB
C#
Raw Permalink Normal View History

2023-05-23 16:13:17 +08:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraNavBar;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraTabbedMdi;
using System.Reflection;
//using DeiNiu.wms.Logical;
using DeiNiu.wms.Data;
using DeiNiu.wms.Data.Model;
using DevExpress.LookAndFeel;
using System.Xml;
using System.Runtime.InteropServices;
using DeiNiu.Utils;
using DeiNiu.wms.win.portalService;
using System.Deployment.Application;
2023-12-03 22:13:49 +08:00
using System.Threading;
2023-05-23 16:13:17 +08:00
namespace DeiNiu.wms.win
{
public partial class main : BasicRibbonForm
{
[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();
[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();
private int lastWareHouse = 0;
private string lastSvrUrl = "",lastMgrUrl="";
public main()
{
// initialConsole();
InitializeComponent();
// InitSkinGallery();
// UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);
initialControles();
showLogin();
if (LoginInfo.UserId <= 0)
{
System.Environment.Exit(0);
}
}
private void initialConsole(){
#if DEBUG
AllocConsole();
Shell.WriteLine("注意:启动程序...");
Shell.WriteLine("");
#endif
}
private void initialControles()
{
this.ribbonControl1.ShowToolbarCustomizeItem = false; // hide top left menu
this.ribbonControl1.Minimized = true;
showRibbonEditPage();
dockPanel1.Options.ShowCloseButton = false;
// dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
xtraTabbedMdiManager1.CloseTabOnMiddleClick = CloseTabOnMiddleClick.OnMouseUp;
this.WindowState = FormWindowState.Maximized;
// lbVersion.Text = "wms v1223";// System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() +"--" +System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
// lbVersion.Text = "DNWMS v" + Assembly.GetExecutingAssembly().GetName().Version.ToString();
lbVersion.Text = "DNWMS v" + getVersiion();
}
private void showRibbonEditPage()
{
int cnt = xtraTabbedMdiManager1.Pages.Count;
ribbonPageEdit.Visible = xtraTabbedMdiManager1.Pages.Count > 0; //hide editPage when no subform exist.
ribbonControl1.SelectedPage = ribbonControl1.Pages[0];
}
private void ribbonControl1_Merge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
{
//RibbonControl parentRRibbon = sender as RibbonControl;
//RibbonControl childRibbon = e.MergedChild;
//parentRRibbon.StatusBar.MergeStatusBar(childRibbon.StatusBar);
}
private void ribbonControl1_UnMerge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
{
//RibbonControl parentRRibbon = sender as RibbonControl;
//parentRRibbon.StatusBar.UnMergeStatusBar();
}
public Form getOpenedForm(string itemHeader)
{
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return itemPage.MdiChild;
}
}
return null;
}
public void OpenLink( Form itemForm, string itemHeader)
{
//遍历已打开的TabPage,若发现已打开过则不再重复打开并设置为Active
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return;
}
}
itemForm.MdiParent = this;
itemForm.Text = itemHeader;
itemForm.Show();
//设置为Active
xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
}
private void navBarControl1_LinkClicked(object sender, NavBarLinkEventArgs e)
{
if (LoginInfo.UserId <= 0)
{
showLogin();
return;
}
String itemHeader = e.Link.Caption;
//遍历已打开的TabPage,若发现已打开过则不再重复打开并设置为Active
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return;
}
}
String formName = e.Link.Item.Tag == null ? null : e.Link.Item.Tag.ToString();
if (string.IsNullOrEmpty(formName))
{
return;
}
showWaitForm();
String fullName = GetType().Namespace + "." + formName;
Assembly assembly = GetType().Assembly;
Type type = assembly.GetType(fullName);//AuthorityForm
if (type == null)
{
closeWaitForm();
showErrorMsg( e.Link.Item.Name + "窗体打开失败");
return;
}
Form itemForm = (Form)Activator.CreateInstance(type);
itemForm.MdiParent = this;
itemForm.Text = itemHeader;
closeWaitForm();
itemForm.Show();
//设置为Active
xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
showRibbonEditPage();
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
//AddPageMdi(e.Link.Item);
}
private new void showLogin()
{
// showErrorMsg(DateTime.Now.ToShortDateString());
2023-05-23 16:13:17 +08:00
int uid = LoginInfo.UserId;
Login lg = new Login();
lg.ShowDialog();
showWaitForm();
createMenus();
closeWaitForm();
}
private void createMenus(){
if (lastMgrUrl != Park.svrMgrUrl || lastWareHouse != Park.wareHouseId
|| lastSvrUrl != Park.svrUrl || LoginInfo.UserId <= 0)
{
// System.Environment.Exit(0);
this.navBarControl1.BeginUpdate();
this.navBarControl1.Groups.Clear();
this.navBarControl1.EndUpdate();
doClear();
if(LoginInfo.UserId <= 0)
return;
}
lastWareHouse = Park.wareHouseId;
lastSvrUrl = Park.svrUrl;
lastMgrUrl =Park.svrMgrUrl;
Park.loadConfig();
//if (Park.currentUser == null)
// {
// return;
// }
//string title = "";//得牛仓储
//this.Text = string.Format("{0}@{1}.{2}", LoginInfo.Account, Park.wareHouse,Park.svrMgrUrl/*"高达医药"*/);// string.Format("{0} {1}", title, LoginInfo.Account);
lbAccount.Text = string.Format("{0}@{1}.{2}", LoginInfo.Account, Park.wareHouse, Park.svrMgrUrl/*"高达医药"*/);// string.Format("{0} {1}", title, LoginInfo.Account);
this.InitSkinGallery();
// initailErpData();
this.navBarControl1.BeginUpdate();
this.navBarControl1.Groups.Clear();
// LAuthority la = new LAuthority();
// Dictionary<String, List<Authority>> auths = la.getCatedAuthorities(Park.currentUser.GetEmployee.ID);
Dictionary<String, string[]> result = null;
try
{
result = pclient.getCatedAuths(LoginInfo.UserId, Park.wareHouseId);
closeClient();
WmsConstants.SPECIAL_AUTHS = pclient.getSpecialAuths(LoginInfo.UserId, Park.wareHouseId);
closeClient();
}
catch (Exception er)
{
// showErrorMsg(er.Message);
return;
}
foreach (String cate in result.Keys)
{
NavBarGroup group1 = new NavBarGroup(cate);
foreach (string link in result[cate])
{
string[] rs = link.Split(':');
if (string.IsNullOrEmpty(rs[0]))
{
continue;
}
NavBarItem nbi = new NavBarItem(rs[0]);
nbi.Tag = rs[1];
2023-11-21 19:18:23 +08:00
nbi.Appearance.ForeColor= Color.White;
nbi.AppearanceHotTracked.ForeColor= Color.White;
2023-05-23 16:13:17 +08:00
group1.ItemLinks.Add(nbi);
}
if (group1.ItemLinks.Count > 0)
{
this.navBarControl1.Groups.Add(group1);
group1.Expanded = group1.ItemLinks.Count > 0;
group1.Expanded = group1.Expanded && WmsConstants.IS_MENU_EXPANDED;
}
if (group1.ItemLinks.Count == 0)
{
group1.Appearance.ForeColor = Color.LightGray;
group1.Hint = "无权访问";
}
}
this.navBarControl1.EndUpdate();
this.navBarControl1.LinkClicked += new NavBarLinkEventHandler(navBarControl1_LinkClicked);
showRibbonEditPage();
/*
List<Authority> auths = la.getAuthorities(Park.currentUser.GetEmployee.ID);
foreach (Authority auth in auths)
{
if (auth.auth_uplevel == 0) //category
{
NavBarGroup group1 = new NavBarGroup(auth.auth_name);
this.navBarControl1.Groups.Add(group1);
group1.Expanded = true;
foreach (Authority link in auths)
{
if (link.auth_uplevel == auth.ID)
{
NavBarItem nbi = new NavBarItem(link.auth_name);
nbi.Tag = link.auth_class;
group1.ItemLinks.Add(nbi);
}
}
}
}
*/
}
/**
* clear mdi,close forms
*
*/
private void doClear()
{
xtraTabbedMdiManager1.Pages.Clear();
// string title = "";//得牛仓储
// this.Text = string.Format("{0} {1}", title, "未登录");
}
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (LoginInfo.UserId <= 0)
{
doClear();
}
showLogin();
}
private void xtraTabbedMdiManager1_PageRemoved(object sender, MdiTabPageEventArgs e)
{
showRibbonEditPage();
}
private void dockPanel1_ClosingPanel(object sender, DevExpress.XtraBars.Docking.DockPanelCancelEventArgs e)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
private void dockPanel1_Collapsed(object sender, DevExpress.XtraBars.Docking.DockPanelEventArgs e)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
private void dockPanel1_VisibilityChanged(object sender, DevExpress.XtraBars.Docking.VisibilityChangedEventArgs e)
{
if (dockPanel1.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Hidden)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
}
/// <summary>
/// 与控制台交互
/// </summary>
static class Shell
{
/// <summary>
/// 输出信息
/// </summary>
/// <param name="format"></param>
/// <param name="args"></param>
public static void WriteLine(string format, params object[] args)
{
WriteLine(string.Format(format, args));
}
/// <summary>
/// 输出信息
/// </summary>
/// <param name="output"></param>
public static void WriteLine(string output)
{
Console.ForegroundColor = GetConsoleColor(output);
Console.WriteLine(@"[{0}]{1}", DateTimeOffset.Now, output);
}
/// <summary>
/// 根据输出文本选择控制台文字颜色
/// </summary>
/// <param name="output"></param>
/// <returns></returns>
private static ConsoleColor GetConsoleColor(string output)
{
if (output.StartsWith("警告")) return ConsoleColor.Yellow;
if (output.StartsWith("错误")) return ConsoleColor.Red;
if (output.StartsWith("注意")) return ConsoleColor.Green;
return ConsoleColor.Gray;
}
}
//private void xtraTabbedMdiManager1_FloatMDIChildActivated(object sender, EventArgs e)
//{
//}
//private void xtraTabbedMdiManager1_SelectedPageChanged(object sender, EventArgs e)
//{
// //RibbonControl subRibbon = ((basicRibbonForm)xtraTabbedMdiManager1.SelectedPage.MdiChild).getRibbon();
// //this.ribbonControl1.MergeRibbon(subRibbon);
//}
#region
//初始化皮肤
2023-11-21 19:18:23 +08:00
string defaultSkinName = "VS2010";
2023-05-23 16:13:17 +08:00
void InitSkinGallery()
{
DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = new Font("黑体 常规", 12);
// gallerySkins.Manager = barManager1;
// DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGalleryDropDown(gallerySkins, true);
// CheckFile();//检查文件
// GetXmlSkin();//获取xml主题
// UserLookAndFeel.Default.SetSkinStyle("DevExpress Style");
if (!string.IsNullOrEmpty(LoginInfo.Theme))
{
defaultSkinName = LoginInfo.Theme;
// defaultSkinName = "Summer 2008";
}
DevExpress.UserSkins.BonusSkins.Register();
DevExpress.Skins.SkinManager.EnableFormSkins();
//This set the style to use skin technology
DevExpress.LookAndFeel.UserLookAndFeel.Default.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
if (!string.IsNullOrEmpty(defaultSkinName))
{
UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);//设置主题样式
}
}
/*
//检查是否有皮肤名称的xml配置文件
public void CheckFile()
{
try
{
if (System.IO.File.Exists("SkinInfo.xml") == false)
{
CreateXml();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 创建XML文件
public void CreateXml()
{
XmlDocument doc = new XmlDocument(); //建立xml定义声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
XmlElement root = doc.CreateElement("SetSkin"); //创建根节点
XmlElement rootone = doc.CreateElement("Skinstring");//皮肤
doc.AppendChild(root);//将onetwo插入到root节点下
root.AppendChild(rootone);
doc.Save("SkinInfo.xml");//保存皮肤名称文件为xml格式
}
//读取Xml节点内容
public void GetXmlSkin()
{
try
{
XmlDocument mydoc = new XmlDocument();
mydoc.Load("SkinInfo.xml");//从xml文件中提取皮肤名称
XmlNode ressNode = mydoc.SelectSingleNode("SetSkin");//头和尾
defaultSkinName = ressNode.SelectSingleNode("Skinstring").InnerText;//把提取出来的皮肤名称存到defaultSkinName中
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
*/
private void skinRibbonGalleryBarItem1_Gallery_ItemClick(object sender, GalleryItemClickEventArgs e)
{
if (skinRibbonGalleryBarItem1.Gallery == null)
{
return;
}
try
{
showWaitForm();
/*
XmlDocument doc = new XmlDocument();
doc.Load("SkinInfo.xml");
XmlNodeList nodelist = doc.SelectSingleNode("SetSkin").ChildNodes;
foreach (XmlNode node in nodelist)
{
XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型
if (xe.Name == "Skinstring")
{
xe.InnerText = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;//主题的描述,保存所选的主题名称,参见GetCheckedItems()[0]函数的解释,主要用这个函数提取皮肤名称
}
}
doc.Save("SkinInfo.xml");
*/
if (LoginInfo.UserId >0)
{
string tag = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//caption;
string caption = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;
try
{
pclient.updateUserTheme(LoginInfo.UserId,skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString());
closeClient();
}
catch
{
return;
}
//Park.currentUser.GetEmployee.em_profile = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//caption;
//Park.currentUser.GetEmployee.Update();
}
// System.Threading.Thread.CurrentThread.Join(10);
}
catch (Exception er)
{
DeiNiu.Utils.LogHelper.WriteLog(typeof(main), er);
}
finally
{
closeWaitForm();
}
}
#endregion
private void main_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
e.Cancel = true;
2023-11-21 19:18:23 +08:00
}
2023-12-03 22:13:49 +08:00
// LogHelper.debug(this.GetType(), "is closing....");
2023-05-23 16:13:17 +08:00
}
private void main_FormClosed(object sender, FormClosedEventArgs e)
{
2023-12-03 22:13:49 +08:00
// showWaitForm();
2023-05-23 16:13:17 +08:00
try
{
2023-12-03 22:13:49 +08:00
Thread stockCheckThread = new Thread(closeapp);
stockCheckThread.IsBackground = true;
stockCheckThread.Start();
2023-05-23 16:13:17 +08:00
}
catch { }
2023-12-03 22:13:49 +08:00
// LogHelper.debug(this.GetType(), " closed....");
}
private void closeapp()
{
System.Environment.Exit(0);
2023-05-23 16:13:17 +08:00
}
2023-12-03 22:13:49 +08:00
2023-05-23 16:13:17 +08:00
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
return;
}
// showWaitForm();
try
{
System.Environment.Exit(0);
}
catch { }
}
private void bbiAbout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
DeiNiu.wms.win.utils.frmAbout Ab = new DeiNiu.wms.win.utils.frmAbout();
Ab.ShowDialog();
}
private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ConfigPrint cp = new ConfigPrint();
OpenLink(cp,cp.Text);
}
/// <summary>
/// 获取客户端发布版本号
/// </summary>
/// <returns>当前版本号</returns>
private static string getVersiion()
{
var version = "";
if (ApplicationDeployment.IsNetworkDeployed)//是否已连接
{
ApplicationDeployment currDeployment = ApplicationDeployment.CurrentDeployment;
DateTime lastCheck = currDeployment.TimeOfLastUpdateCheck.ToLocalTime();
var lastDay = lastCheck.Date.ToShortDateString();
var lastTime = lastCheck.TimeOfDay.ToString();
var majorVersion = currDeployment.CurrentVersion.Major.ToString();//主版本
var minorVersion = currDeployment.CurrentVersion.Minor.ToString(); //次版本
var revisionVersion = currDeployment.CurrentVersion.Revision.ToString();//内部版本号
var blildVersion = currDeployment.CurrentVersion.Build.ToString();//修订号
version = majorVersion + "." + minorVersion + "." + blildVersion + "." + revisionVersion;
}
return version;
}
}
}