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);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|