507 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			507 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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.ServiceReferencePortal;
 | ||
| 
 | ||
| 
 | ||
| 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();  
 | ||
| 
 | ||
|         public main()
 | ||
|         {
 | ||
|           //  initialConsole();
 | ||
|             InitializeComponent();
 | ||
|          //   InitSkinGallery();
 | ||
|            // UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);
 | ||
| 
 | ||
|             initialControles();
 | ||
|             showLogin();
 | ||
|          
 | ||
|             
 | ||
|         }
 | ||
| 
 | ||
|         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;
 | ||
| 
 | ||
|              
 | ||
| 
 | ||
|         }
 | ||
|         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();
 | ||
| 
 | ||
|         }
 | ||
|         private 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)
 | ||
|         {
 | ||
|             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 (formName == null)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
|             String fullName = GetType().Namespace + "." + formName;
 | ||
|             Assembly assembly = GetType().Assembly;
 | ||
|             Type type = assembly.GetType(fullName);//AuthorityForm
 | ||
|             Form itemForm = (Form)Activator.CreateInstance(type);
 | ||
|             itemForm.MdiParent = this;
 | ||
|             itemForm.Text = itemHeader;
 | ||
|             itemForm.Show();
 | ||
| 
 | ||
|             //设置为Active
 | ||
|             xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
 | ||
| 
 | ||
|             showRibbonEditPage();
 | ||
|              
 | ||
|              dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
 | ||
|             //AddPageMdi(e.Link.Item);
 | ||
|         }
 | ||
| 
 | ||
|         public void showLogin()
 | ||
|         {
 | ||
|             Login lg = new Login();
 | ||
|             lg.ShowDialog();
 | ||
|             createMenus();
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 同步erp 信息
 | ||
|         /// </summary>
 | ||
|         private void initailErpData()
 | ||
|         {
 | ||
|             showWaitForm();
 | ||
| 
 | ||
|             try
 | ||
|             {
 | ||
|                 //同步商品信息
 | ||
|                 //lWmsGoods lg = new lWmsGoods();
 | ||
|                 //lg.getWmsGoods.syncGoods();
 | ||
| 
 | ||
|                 using (ServiceReferenceGoods.GoodsClient client = new ServiceReferenceGoods.GoodsClient())
 | ||
|                 {
 | ||
|                      client.syncGoods();
 | ||
|                 }
 | ||
| 
 | ||
| 
 | ||
|                 
 | ||
|             }catch(Exception e){
 | ||
|                 showErrorMsg(e.Message);
 | ||
|             }
 | ||
| 
 | ||
|             closeWaitForm();
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
|         }
 | ||
|         private void createMenus(){
 | ||
| 
 | ||
|             if (LoginInfo.UserId == 0)
 | ||
|             {
 | ||
|                 return;
 | ||
|             }
 | ||
| 
 | ||
|            //if (Park.currentUser == null) 
 | ||
|            // {
 | ||
|            //     return;
 | ||
|            // }
 | ||
| 
 | ||
|            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
 | ||
|             {
 | ||
|                 using (PortalClient pclient = new PortalClient())
 | ||
|                 {
 | ||
|                     result = pclient.getCatedAuths(LoginInfo.UserId);
 | ||
|                 }
 | ||
|             }
 | ||
|             catch (Exception er)
 | ||
|             {
 | ||
|                 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];
 | ||
|                     group1.ItemLinks.Add(nbi);
 | ||
| 
 | ||
|                 }
 | ||
|                 if (group1.ItemLinks.Count > 0)
 | ||
|                 {
 | ||
|                     this.navBarControl1.Groups.Add(group1);
 | ||
|                     group1.Expanded = true;
 | ||
|                 }
 | ||
|             }
 | ||
|             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();
 | ||
|         }
 | ||
|         private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 | ||
|         {
 | ||
|             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 皮肤
 | ||
|         //初始化皮肤
 | ||
|        string defaultSkinName = "Summer Tag";
 | ||
|         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);//将one,two,插入到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
 | ||
|                     {
 | ||
|                         using (PortalClient pclient = new PortalClient())
 | ||
|                         {
 | ||
|                            pclient.updateUserTheme(LoginInfo.UserId,skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString());
 | ||
|                         }
 | ||
|                     }
 | ||
|                     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;
 | ||
| 
 | ||
|             }         
 | ||
|         }
 | ||
| 
 | ||
|         private void main_FormClosed(object sender, FormClosedEventArgs e)
 | ||
|         {
 | ||
|             showWaitForm();
 | ||
|             System.Environment.Exit(0); 
 | ||
|         }
 | ||
|     }   
 | ||
|      
 | ||
| }
 | ||
|   |