diff --git a/插件库/Lskj.PubBomImportNew/DllBaseClass.cs b/插件库/Lskj.PubBomImportNew/DllBaseClass.cs new file mode 100644 index 0000000..5994345 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/DllBaseClass.cs @@ -0,0 +1,103 @@ +/****************************** +* 说明:PubSpec 模块 +* 创建人:龚宇超 +* 创建日期:2018-01-02 +* 修改人: +* 修改日期: +* 修改备注: +* 版本:1.0.0.0 +******************************/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Lskj.Util; +using Lskj.Business; +using System.Windows.Forms; +using Lskj.Model; +using DevExpress.XtraGrid.Views.Grid; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using System.Data; +using Lskj.Business.Impl; + +namespace Lskj.PubBomImportNew +{ + /// + /// PubSpec 模块 + /// + public class DllBaseClass : IForm + { + public DllBaseClass() + { + + } + public DllBaseClass(string[] obj) + { + try + { + FrmMain main = new FrmMain(); + this.SubForm = main; + main.Model = new DynamicBomImportNew(obj); + } + catch (Exception ex) + { + LogUtil.WriteError("Lskj.PubSpecialImport.dll--参数错误-->" + obj.ToString(), ex); + } + } + public Form SubForm { get; set; } + } + /// + /// PubSpecialImport入库参数 + /// + public class DynamicBomImportNew : DynamicModel + { + /// + /// 标题行 + /// + public string FirstRowIndex = ""; + /// + /// 结束标识 + /// + public string EndTableCond = ""; + /// + /// sheet名称 + /// + public string SheetName = ""; + /// + /// 字段对照 + /// + public string MainFieldDic = ""; + /// + /// 读取筛选条件 + /// + public string ReadTableCond = ""; + /// + /// 忽略合并明细列标题行 + /// + public bool CustomerServiceApp = false; + /// + /// 模块编码 + /// + public string SaveModuleCode = ""; + public DynamicBomImportNew(string[] args) + : base(args) + { + if (args.Length > 5 && !string.IsNullOrWhiteSpace(args[5])) + { + FirstRowIndex = args[5] + ""; + } + if (args.Length > 6 && !string.IsNullOrWhiteSpace(args[6])) + { + EndTableCond = args[6] + ""; + } + if (args.Length > 7 && !string.IsNullOrWhiteSpace(args[7])) + { + SheetName = args[7] + ""; + } + if (args.Length > 8 && !string.IsNullOrWhiteSpace(args[8])) + { + MainFieldDic = args[8] + ""; + } + if (args.Length > 9 && !string.IsNullOrWhiteSpace(args[9])) + { \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmBillInfo.Designer.cs b/插件库/Lskj.PubBomImportNew/FrmBillInfo.Designer.cs new file mode 100644 index 0000000..7f528a1 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmBillInfo.Designer.cs @@ -0,0 +1,721 @@ + +namespace Lskj.PubBomImport +{ + partial class FrmBillInfo + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pl_main = new DevExpress.XtraEditors.PanelControl(); + this.pl_main_center = new DevExpress.XtraEditors.PanelControl(); + this.pl_main_center_detail = new DevExpress.XtraEditors.PanelControl(); + this.gcMain = new Lskj.Control.GridControlEx(); + this.pl_main_center_master = new DevExpress.XtraEditors.XtraScrollableControl(); + this.pl_treeview_detault_search = new DevExpress.XtraEditors.PanelControl(); + this.panelControl4 = new DevExpress.XtraEditors.PanelControl(); + this.textEdit1 = new DevExpress.XtraEditors.TextEdit(); + this.lceCombobox = new Lskj.Control.LabelComboxEdit(); + this.panelControl3 = new DevExpress.XtraEditors.PanelControl(); + this.btnTreeSearch = new DevExpress.XtraEditors.SimpleButton(); + this.pl_main_bottom = new DevExpress.XtraEditors.PanelControl(); + this.dbpFP = new DevExpress.XtraEditors.DropDownButton(); + this.btnRefresh = new DevExpress.XtraEditors.SimpleButton(); + this.btnHiding = new DevExpress.XtraEditors.SimpleButton(); + this.btnHelp = new DevExpress.XtraEditors.SimpleButton(); + this.pl_templete = new DevExpress.XtraEditors.PanelControl(); + this.cb_templete = new DevExpress.XtraEditors.ComboBoxEdit(); + this.lbl_templete = new DevExpress.XtraEditors.LabelControl(); + this.pl_input = new DevExpress.XtraEditors.PanelControl(); + this.cb_input = new DevExpress.XtraEditors.ComboBoxEdit(); + this.txt_input = new DevExpress.XtraEditors.TextEdit(); + this.labelControl2 = new DevExpress.XtraEditors.LabelControl(); + this.btn_input = new DevExpress.XtraEditors.SimpleButton(); + this.dpbImport = new DevExpress.XtraEditors.DropDownButton(); + this.btnBillAdd = new DevExpress.XtraEditors.SimpleButton(); + this.btnBillApply = new DevExpress.XtraEditors.SimpleButton(); + this.dpCopyBill = new DevExpress.XtraEditors.DropDownButton(); + this.btnPrint = new DevExpress.XtraEditors.DropDownButton(); + this.dpbTools = new DevExpress.XtraEditors.DropDownButton(); + this.btnDelete = new DevExpress.XtraEditors.SimpleButton(); + this.btnBillSave = new DevExpress.XtraEditors.SimpleButton(); + this.pl_main_top = new DevExpress.XtraEditors.PanelControl(); + this.pl_main_top_center = new DevExpress.XtraEditors.PanelControl(); + this.lbTitle = new System.Windows.Forms.Label(); + this.pl_main_top_right = new DevExpress.XtraEditors.PanelControl(); + this.lblOrderNo = new DevExpress.XtraEditors.LabelControl(); + this.labelControl1 = new DevExpress.XtraEditors.LabelControl(); + this.pl_main_top_left = new DevExpress.XtraEditors.PanelControl(); + this.pl_red = new DevExpress.XtraEditors.PanelControl(); + this.rdRed = new System.Windows.Forms.RadioButton(); + this.pl_blue = new DevExpress.XtraEditors.PanelControl(); + this.rdBlue = new System.Windows.Forms.RadioButton(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main)).BeginInit(); + this.pl_main.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_center)).BeginInit(); + this.pl_main_center.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_center_detail)).BeginInit(); + this.pl_main_center_detail.SuspendLayout(); + this.pl_main_center_master.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_treeview_detault_search)).BeginInit(); + this.pl_treeview_detault_search.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.panelControl4)).BeginInit(); + this.panelControl4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.panelControl3)).BeginInit(); + this.panelControl3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_bottom)).BeginInit(); + this.pl_main_bottom.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_templete)).BeginInit(); + this.pl_templete.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cb_templete.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pl_input)).BeginInit(); + this.pl_input.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cb_input.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.txt_input.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top)).BeginInit(); + this.pl_main_top.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top_center)).BeginInit(); + this.pl_main_top_center.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top_right)).BeginInit(); + this.pl_main_top_right.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top_left)).BeginInit(); + this.pl_main_top_left.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_red)).BeginInit(); + this.pl_red.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_blue)).BeginInit(); + this.pl_blue.SuspendLayout(); + this.SuspendLayout(); + // + // pl_main + // + this.pl_main.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main.Appearance.Options.UseBackColor = true; + this.pl_main.Controls.Add(this.pl_main_center); + this.pl_main.Controls.Add(this.pl_main_bottom); + this.pl_main.Controls.Add(this.pl_main_top); + this.pl_main.Dock = System.Windows.Forms.DockStyle.Fill; + this.pl_main.Location = new System.Drawing.Point(0, 0); + this.pl_main.Name = "pl_main"; + this.pl_main.Size = new System.Drawing.Size(666, 518); + this.pl_main.TabIndex = 2; + // + // pl_main_center + // + this.pl_main_center.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main_center.Appearance.Options.UseBackColor = true; + this.pl_main_center.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_main_center.Controls.Add(this.pl_main_center_detail); + this.pl_main_center.Controls.Add(this.pl_main_center_master); + this.pl_main_center.Dock = System.Windows.Forms.DockStyle.Fill; + this.pl_main_center.Location = new System.Drawing.Point(2, 40); + this.pl_main_center.Name = "pl_main_center"; + this.pl_main_center.Size = new System.Drawing.Size(662, 439); + this.pl_main_center.TabIndex = 2; + // + // pl_main_center_detail + // + this.pl_main_center_detail.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main_center_detail.Appearance.Options.UseBackColor = true; + this.pl_main_center_detail.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_main_center_detail.Controls.Add(this.gcMain); + this.pl_main_center_detail.Dock = System.Windows.Forms.DockStyle.Fill; + this.pl_main_center_detail.Location = new System.Drawing.Point(0, 164); + this.pl_main_center_detail.Name = "pl_main_center_detail"; + this.pl_main_center_detail.Size = new System.Drawing.Size(662, 275); + this.pl_main_center_detail.TabIndex = 5; + // + // gcMain + // + this.gcMain.AdapterObj = null; + this.gcMain.BackColor = System.Drawing.Color.Transparent; + this.gcMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.gcMain.Location = new System.Drawing.Point(0, 0); + this.gcMain.Margin = new System.Windows.Forms.Padding(5); + this.gcMain.Name = "gcMain"; + this.gcMain.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum; + this.gcMain.Size = new System.Drawing.Size(662, 275); + this.gcMain.TabIndex = 0; + // + // pl_main_center_master + // + this.pl_main_center_master.AutoScroll = false; + this.pl_main_center_master.Controls.Add(this.pl_treeview_detault_search); + this.pl_main_center_master.Dock = System.Windows.Forms.DockStyle.Top; + this.pl_main_center_master.Location = new System.Drawing.Point(0, 0); + this.pl_main_center_master.Name = "pl_main_center_master"; + this.pl_main_center_master.Size = new System.Drawing.Size(662, 164); + this.pl_main_center_master.TabIndex = 6; + // + // pl_treeview_detault_search + // + this.pl_treeview_detault_search.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_treeview_detault_search.Appearance.Options.UseBackColor = true; + this.pl_treeview_detault_search.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_treeview_detault_search.Controls.Add(this.panelControl4); + this.pl_treeview_detault_search.Controls.Add(this.panelControl3); + this.pl_treeview_detault_search.Location = new System.Drawing.Point(39, 104); + this.pl_treeview_detault_search.Margin = new System.Windows.Forms.Padding(5, 3, 5, 3); + this.pl_treeview_detault_search.Name = "pl_treeview_detault_search"; + this.pl_treeview_detault_search.Size = new System.Drawing.Size(270, 28); + this.pl_treeview_detault_search.TabIndex = 24; + this.pl_treeview_detault_search.Visible = false; + // + // panelControl4 + // + this.panelControl4.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.panelControl4.Controls.Add(this.textEdit1); + this.panelControl4.Controls.Add(this.lceCombobox); + this.panelControl4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelControl4.Location = new System.Drawing.Point(0, 0); + this.panelControl4.Name = "panelControl4"; + this.panelControl4.Padding = new System.Windows.Forms.Padding(2, 4, 2, 0); + this.panelControl4.Size = new System.Drawing.Size(206, 28); + this.panelControl4.TabIndex = 25; + // + // textEdit1 + // + this.textEdit1.Dock = System.Windows.Forms.DockStyle.Fill; + this.textEdit1.Location = new System.Drawing.Point(113, 4); + this.textEdit1.Name = "textEdit1"; + this.textEdit1.Properties.Appearance.Font = new System.Drawing.Font("宋体", 10F); + this.textEdit1.Properties.Appearance.Options.UseFont = true; + this.textEdit1.Size = new System.Drawing.Size(91, 20); + this.textEdit1.TabIndex = 5; + // + // lceCombobox + // + this.lceCombobox.BackColor = System.Drawing.SystemColors.Control; + this.lceCombobox.Dock = System.Windows.Forms.DockStyle.Left; + this.lceCombobox.EditText = ""; + this.lceCombobox.Font = new System.Drawing.Font("宋体", 9F); + this.lceCombobox.FontSize = 0F; + this.lceCombobox.LabelText = "查询"; + this.lceCombobox.Location = new System.Drawing.Point(2, 4); + this.lceCombobox.Margin = new System.Windows.Forms.Padding(4); + this.lceCombobox.Model = null; + this.lceCombobox.Name = "lceCombobox"; + this.lceCombobox.NullText = ""; + this.lceCombobox.ReadOnly = false; + this.lceCombobox.Required = false; + this.lceCombobox.Size = new System.Drawing.Size(111, 24); + this.lceCombobox.TabIndex = 4; + // + // panelControl3 + // + this.panelControl3.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.panelControl3.Controls.Add(this.btnTreeSearch); + this.panelControl3.Dock = System.Windows.Forms.DockStyle.Right; + this.panelControl3.Location = new System.Drawing.Point(206, 0); + this.panelControl3.Name = "panelControl3"; + this.panelControl3.Padding = new System.Windows.Forms.Padding(3); + this.panelControl3.Size = new System.Drawing.Size(64, 28); + this.panelControl3.TabIndex = 25; + // + // btnTreeSearch + // + this.btnTreeSearch.AllowFocus = false; + this.btnTreeSearch.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnTreeSearch.Appearance.Options.UseFont = true; + this.btnTreeSearch.Dock = System.Windows.Forms.DockStyle.Right; + this.btnTreeSearch.Location = new System.Drawing.Point(1, 3); + this.btnTreeSearch.Name = "btnTreeSearch"; + this.btnTreeSearch.Size = new System.Drawing.Size(60, 22); + this.btnTreeSearch.TabIndex = 21; + this.btnTreeSearch.Text = "查询"; + // + // pl_main_bottom + // + this.pl_main_bottom.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main_bottom.Appearance.Options.UseBackColor = true; + this.pl_main_bottom.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_main_bottom.Controls.Add(this.dbpFP); + this.pl_main_bottom.Controls.Add(this.btnRefresh); + this.pl_main_bottom.Controls.Add(this.btnHiding); + this.pl_main_bottom.Controls.Add(this.btnHelp); + this.pl_main_bottom.Controls.Add(this.pl_templete); + this.pl_main_bottom.Controls.Add(this.pl_input); + this.pl_main_bottom.Controls.Add(this.dpbImport); + this.pl_main_bottom.Controls.Add(this.btnBillAdd); + this.pl_main_bottom.Controls.Add(this.btnBillApply); + this.pl_main_bottom.Controls.Add(this.dpCopyBill); + this.pl_main_bottom.Controls.Add(this.btnPrint); + this.pl_main_bottom.Controls.Add(this.dpbTools); + this.pl_main_bottom.Controls.Add(this.btnDelete); + this.pl_main_bottom.Controls.Add(this.btnBillSave); + this.pl_main_bottom.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pl_main_bottom.Location = new System.Drawing.Point(2, 479); + this.pl_main_bottom.Name = "pl_main_bottom"; + this.pl_main_bottom.Size = new System.Drawing.Size(662, 37); + this.pl_main_bottom.TabIndex = 1; + // + // dbpFP + // + this.dbpFP.AllowFocus = false; + this.dbpFP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.dbpFP.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.dbpFP.Appearance.Options.UseFont = true; + this.dbpFP.Location = new System.Drawing.Point(-199, 7); + this.dbpFP.Name = "dbpFP"; + this.dbpFP.Size = new System.Drawing.Size(58, 26); + this.dbpFP.TabIndex = 34; + this.dbpFP.Text = "分配"; + // + // btnRefresh + // + this.btnRefresh.AllowFocus = false; + this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnRefresh.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRefresh.Appearance.Options.UseFont = true; + this.btnRefresh.Location = new System.Drawing.Point(-135, 7); + this.btnRefresh.Name = "btnRefresh"; + this.btnRefresh.Size = new System.Drawing.Size(74, 26); + this.btnRefresh.TabIndex = 33; + this.btnRefresh.Text = "刷新列数据"; + // + // btnHiding + // + this.btnHiding.AllowFocus = false; + this.btnHiding.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnHiding.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnHiding.Appearance.Options.UseFont = true; + this.btnHiding.Location = new System.Drawing.Point(-59, 7); + this.btnHiding.Name = "btnHiding"; + this.btnHiding.Size = new System.Drawing.Size(67, 26); + this.btnHiding.TabIndex = 32; + this.btnHiding.Text = "隐藏主表"; + this.btnHiding.Visible = false; + // + // btnHelp + // + this.btnHelp.AllowFocus = false; + this.btnHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnHelp.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnHelp.Appearance.Options.UseFont = true; + this.btnHelp.Location = new System.Drawing.Point(10, 7); + this.btnHelp.Name = "btnHelp"; + this.btnHelp.Size = new System.Drawing.Size(67, 26); + this.btnHelp.TabIndex = 30; + this.btnHelp.Text = "帮助文档"; + // + // pl_templete + // + this.pl_templete.Controls.Add(this.cb_templete); + this.pl_templete.Controls.Add(this.lbl_templete); + this.pl_templete.Location = new System.Drawing.Point(3, 3); + this.pl_templete.LookAndFeel.SkinName = "VS2010"; + this.pl_templete.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Style3D; + this.pl_templete.Name = "pl_templete"; + this.pl_templete.Size = new System.Drawing.Size(195, 29); + this.pl_templete.TabIndex = 29; + this.pl_templete.Visible = false; + // + // cb_templete + // + this.cb_templete.Location = new System.Drawing.Point(58, 4); + this.cb_templete.Name = "cb_templete"; + this.cb_templete.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { + new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}); + this.cb_templete.Properties.DropDownRows = 8; + this.cb_templete.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor; + this.cb_templete.Size = new System.Drawing.Size(133, 20); + this.cb_templete.TabIndex = 19; + // + // lbl_templete + // + this.lbl_templete.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_templete.Location = new System.Drawing.Point(5, 8); + this.lbl_templete.Name = "lbl_templete"; + this.lbl_templete.Size = new System.Drawing.Size(48, 12); + this.lbl_templete.TabIndex = 16; + this.lbl_templete.Text = "选择模版"; + // + // pl_input + // + this.pl_input.Controls.Add(this.cb_input); + this.pl_input.Controls.Add(this.txt_input); + this.pl_input.Controls.Add(this.labelControl2); + this.pl_input.Controls.Add(this.btn_input); + this.pl_input.Location = new System.Drawing.Point(3, 3); + this.pl_input.LookAndFeel.SkinName = "VS2010"; + this.pl_input.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Style3D; + this.pl_input.Name = "pl_input"; + this.pl_input.Size = new System.Drawing.Size(280, 29); + this.pl_input.TabIndex = 27; + this.pl_input.Visible = false; + // + // cb_input + // + this.cb_input.Location = new System.Drawing.Point(58, 4); + this.cb_input.Name = "cb_input"; + this.cb_input.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { + new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}); + this.cb_input.Properties.DropDownRows = 8; + this.cb_input.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor; + this.cb_input.Size = new System.Drawing.Size(79, 20); + this.cb_input.TabIndex = 19; + // + // txt_input + // + this.txt_input.Location = new System.Drawing.Point(149, 4); + this.txt_input.Name = "txt_input"; + this.txt_input.Properties.Appearance.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txt_input.Properties.Appearance.Options.UseFont = true; + this.txt_input.Size = new System.Drawing.Size(98, 20); + this.txt_input.TabIndex = 18; + // + // labelControl2 + // + this.labelControl2.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelControl2.Location = new System.Drawing.Point(5, 8); + this.labelControl2.Name = "labelControl2"; + this.labelControl2.Size = new System.Drawing.Size(48, 12); + this.labelControl2.TabIndex = 16; + this.labelControl2.Text = "快速录入"; + // + // btn_input + // + this.btn_input.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_input.Appearance.Options.UseFont = true; + this.btn_input.Location = new System.Drawing.Point(249, 4); + this.btn_input.Name = "btn_input"; + this.btn_input.Size = new System.Drawing.Size(27, 21); + this.btn_input.TabIndex = 13; + this.btn_input.Text = ">>"; + // + // dpbImport + // + this.dpbImport.AllowFocus = false; + this.dpbImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.dpbImport.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.dpbImport.Appearance.Options.UseFont = true; + this.dpbImport.DropDownArrowStyle = DevExpress.XtraEditors.DropDownArrowStyle.Show; + this.dpbImport.Location = new System.Drawing.Point(155, 7); + this.dpbImport.Name = "dpbImport"; + this.dpbImport.Size = new System.Drawing.Size(74, 26); + this.dpbImport.TabIndex = 26; + this.dpbImport.Text = "导入导出"; + // + // btnBillAdd + // + this.btnBillAdd.AllowFocus = false; + this.btnBillAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnBillAdd.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnBillAdd.Appearance.Options.UseFont = true; + this.btnBillAdd.Location = new System.Drawing.Point(307, 7); + this.btnBillAdd.Name = "btnBillAdd"; + this.btnBillAdd.Size = new System.Drawing.Size(67, 26); + this.btnBillAdd.TabIndex = 19; + this.btnBillAdd.Text = "新建单据"; + // + // btnBillApply + // + this.btnBillApply.AllowFocus = false; + this.btnBillApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnBillApply.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnBillApply.Appearance.Options.UseFont = true; + this.btnBillApply.Location = new System.Drawing.Point(514, 7); + this.btnBillApply.Name = "btnBillApply"; + this.btnBillApply.Size = new System.Drawing.Size(67, 26); + this.btnBillApply.TabIndex = 25; + this.btnBillApply.Text = "保存提交"; + // + // dpCopyBill + // + this.dpCopyBill.AllowFocus = false; + this.dpCopyBill.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.dpCopyBill.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.dpCopyBill.Appearance.Options.UseFont = true; + this.dpCopyBill.DropDownArrowStyle = DevExpress.XtraEditors.DropDownArrowStyle.Show; + this.dpCopyBill.Location = new System.Drawing.Point(231, 7); + this.dpCopyBill.Name = "dpCopyBill"; + this.dpCopyBill.Size = new System.Drawing.Size(74, 26); + this.dpCopyBill.TabIndex = 24; + this.dpCopyBill.Text = "复制单据"; + // + // btnPrint + // + this.btnPrint.AllowFocus = false; + this.btnPrint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnPrint.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnPrint.Appearance.Options.UseFont = true; + this.btnPrint.DropDownArrowStyle = DevExpress.XtraEditors.DropDownArrowStyle.Show; + this.btnPrint.Location = new System.Drawing.Point(583, 7); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(74, 26); + this.btnPrint.TabIndex = 23; + this.btnPrint.Text = "打印单据"; + // + // dpbTools + // + this.dpbTools.AllowFocus = false; + this.dpbTools.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.dpbTools.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.dpbTools.Appearance.Options.UseFont = true; + this.dpbTools.DropDownArrowStyle = DevExpress.XtraEditors.DropDownArrowStyle.Show; + this.dpbTools.Location = new System.Drawing.Point(79, 7); + this.dpbTools.Name = "dpbTools"; + this.dpbTools.Size = new System.Drawing.Size(74, 26); + this.dpbTools.TabIndex = 22; + this.dpbTools.Text = "常用工具"; + // + // btnDelete + // + this.btnDelete.AllowFocus = false; + this.btnDelete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnDelete.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDelete.Appearance.Options.UseFont = true; + this.btnDelete.Location = new System.Drawing.Point(376, 7); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(67, 26); + this.btnDelete.TabIndex = 20; + this.btnDelete.Text = "删除记录"; + // + // btnBillSave + // + this.btnBillSave.AllowFocus = false; + this.btnBillSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnBillSave.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnBillSave.Appearance.Options.UseFont = true; + this.btnBillSave.Location = new System.Drawing.Point(445, 7); + this.btnBillSave.Name = "btnBillSave"; + this.btnBillSave.Size = new System.Drawing.Size(67, 26); + this.btnBillSave.TabIndex = 21; + this.btnBillSave.Text = "保存单据"; + // + // pl_main_top + // + this.pl_main_top.Appearance.BackColor = System.Drawing.SystemColors.Control; + this.pl_main_top.Appearance.Options.UseBackColor = true; + this.pl_main_top.Controls.Add(this.pl_main_top_center); + this.pl_main_top.Controls.Add(this.pl_main_top_right); + this.pl_main_top.Controls.Add(this.pl_main_top_left); + this.pl_main_top.Dock = System.Windows.Forms.DockStyle.Top; + this.pl_main_top.Location = new System.Drawing.Point(2, 2); + this.pl_main_top.Name = "pl_main_top"; + this.pl_main_top.Size = new System.Drawing.Size(662, 38); + this.pl_main_top.TabIndex = 0; + // + // pl_main_top_center + // + this.pl_main_top_center.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main_top_center.Appearance.Options.UseBackColor = true; + this.pl_main_top_center.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_main_top_center.Controls.Add(this.lbTitle); + this.pl_main_top_center.Dock = System.Windows.Forms.DockStyle.Fill; + this.pl_main_top_center.Location = new System.Drawing.Point(162, 2); + this.pl_main_top_center.Name = "pl_main_top_center"; + this.pl_main_top_center.Size = new System.Drawing.Size(315, 34); + this.pl_main_top_center.TabIndex = 3; + // + // lbTitle + // + this.lbTitle.BackColor = System.Drawing.Color.Transparent; + this.lbTitle.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbTitle.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbTitle.ForeColor = System.Drawing.Color.Blue; + this.lbTitle.Location = new System.Drawing.Point(0, 0); + this.lbTitle.Name = "lbTitle"; + this.lbTitle.Size = new System.Drawing.Size(315, 34); + this.lbTitle.TabIndex = 1; + this.lbTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pl_main_top_right + // + this.pl_main_top_right.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main_top_right.Appearance.Options.UseBackColor = true; + this.pl_main_top_right.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_main_top_right.Controls.Add(this.lblOrderNo); + this.pl_main_top_right.Controls.Add(this.labelControl1); + this.pl_main_top_right.Dock = System.Windows.Forms.DockStyle.Right; + this.pl_main_top_right.Location = new System.Drawing.Point(477, 2); + this.pl_main_top_right.Name = "pl_main_top_right"; + this.pl_main_top_right.Size = new System.Drawing.Size(183, 34); + this.pl_main_top_right.TabIndex = 2; + // + // lblOrderNo + // + this.lblOrderNo.Appearance.BackColor = System.Drawing.Color.Transparent; + this.lblOrderNo.Appearance.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline); + this.lblOrderNo.Appearance.ForeColor = System.Drawing.Color.Blue; + this.lblOrderNo.Location = new System.Drawing.Point(67, 19); + this.lblOrderNo.Name = "lblOrderNo"; + this.lblOrderNo.Size = new System.Drawing.Size(90, 12); + this.lblOrderNo.TabIndex = 1; + this.lblOrderNo.Text = "XTC170112010001"; + // + // labelControl1 + // + this.labelControl1.Appearance.BackColor = System.Drawing.Color.Transparent; + this.labelControl1.Appearance.Font = new System.Drawing.Font("宋体", 9F); + this.labelControl1.Appearance.ForeColor = System.Drawing.Color.Blue; + this.labelControl1.Location = new System.Drawing.Point(7, 19); + this.labelControl1.Name = "labelControl1"; + this.labelControl1.Size = new System.Drawing.Size(54, 12); + this.labelControl1.TabIndex = 0; + this.labelControl1.Text = "单据编号:"; + // + // pl_main_top_left + // + this.pl_main_top_left.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_main_top_left.Appearance.Options.UseBackColor = true; + this.pl_main_top_left.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_main_top_left.Controls.Add(this.pl_red); + this.pl_main_top_left.Controls.Add(this.pl_blue); + this.pl_main_top_left.Dock = System.Windows.Forms.DockStyle.Left; + this.pl_main_top_left.Location = new System.Drawing.Point(2, 2); + this.pl_main_top_left.Name = "pl_main_top_left"; + this.pl_main_top_left.Size = new System.Drawing.Size(160, 34); + this.pl_main_top_left.TabIndex = 1; + // + // pl_red + // + this.pl_red.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_red.Appearance.Options.UseBackColor = true; + this.pl_red.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_red.Controls.Add(this.rdRed); + this.pl_red.Dock = System.Windows.Forms.DockStyle.Left; + this.pl_red.Location = new System.Drawing.Point(80, 0); + this.pl_red.Name = "pl_red"; + this.pl_red.Size = new System.Drawing.Size(80, 34); + this.pl_red.TabIndex = 3; + // + // rdRed + // + this.rdRed.AutoSize = true; + this.rdRed.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.rdRed.ForeColor = System.Drawing.Color.Red; + this.rdRed.Location = new System.Drawing.Point(6, 12); + this.rdRed.Name = "rdRed"; + this.rdRed.Size = new System.Drawing.Size(71, 16); + this.rdRed.TabIndex = 3; + this.rdRed.Text = "红字单据"; + this.rdRed.UseVisualStyleBackColor = true; + // + // pl_blue + // + this.pl_blue.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_blue.Appearance.Options.UseBackColor = true; + this.pl_blue.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_blue.Controls.Add(this.rdBlue); + this.pl_blue.Dock = System.Windows.Forms.DockStyle.Left; + this.pl_blue.Location = new System.Drawing.Point(0, 0); + this.pl_blue.Name = "pl_blue"; + this.pl_blue.Size = new System.Drawing.Size(80, 34); + this.pl_blue.TabIndex = 2; + // + // rdBlue + // + this.rdBlue.AutoSize = true; + this.rdBlue.Checked = true; + this.rdBlue.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.rdBlue.ForeColor = System.Drawing.Color.Blue; + this.rdBlue.Location = new System.Drawing.Point(7, 12); + this.rdBlue.Name = "rdBlue"; + this.rdBlue.Size = new System.Drawing.Size(71, 16); + this.rdBlue.TabIndex = 2; + this.rdBlue.TabStop = true; + this.rdBlue.Text = "蓝字单据"; + this.rdBlue.UseVisualStyleBackColor = true; + // + // FrmBillInfo + // + this.Controls.Add(this.pl_main); + this.Name = "FrmBillInfo"; + this.Size = new System.Drawing.Size(666, 518); + ((System.ComponentModel.ISupportInitialize)(this.pl_main)).EndInit(); + this.pl_main.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_center)).EndInit(); + this.pl_main_center.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_center_detail)).EndInit(); + this.pl_main_center_detail.ResumeLayout(false); + this.pl_main_center_master.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_treeview_detault_search)).EndInit(); + this.pl_treeview_detault_search.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.panelControl4)).EndInit(); + this.panelControl4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.panelControl3)).EndInit(); + this.panelControl3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_bottom)).EndInit(); + this.pl_main_bottom.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_templete)).EndInit(); + this.pl_templete.ResumeLayout(false); + this.pl_templete.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cb_templete.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pl_input)).EndInit(); + this.pl_input.ResumeLayout(false); + this.pl_input.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.cb_input.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.txt_input.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top)).EndInit(); + this.pl_main_top.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top_center)).EndInit(); + this.pl_main_top_center.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top_right)).EndInit(); + this.pl_main_top_right.ResumeLayout(false); + this.pl_main_top_right.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_main_top_left)).EndInit(); + this.pl_main_top_left.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_red)).EndInit(); + this.pl_red.ResumeLayout(false); + this.pl_red.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_blue)).EndInit(); + this.pl_blue.ResumeLayout(false); + this.pl_blue.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private DevExpress.XtraEditors.PanelControl pl_main; + private DevExpress.XtraEditors.PanelControl pl_main_center; + private DevExpress.XtraEditors.PanelControl pl_main_center_detail; + private Control.GridControlEx gcMain; + private DevExpress.XtraEditors.XtraScrollableControl pl_main_center_master; + private DevExpress.XtraEditors.PanelControl pl_treeview_detault_search; + private DevExpress.XtraEditors.PanelControl panelControl4; + private DevExpress.XtraEditors.TextEdit textEdit1; + private Control.LabelComboxEdit lceCombobox; + private DevExpress.XtraEditors.PanelControl panelControl3; + private DevExpress.XtraEditors.SimpleButton btnTreeSearch; + public DevExpress.XtraEditors.PanelControl pl_main_bottom; + private DevExpress.XtraEditors.DropDownButton dbpFP; + private DevExpress.XtraEditors.SimpleButton btnRefresh; + private DevExpress.XtraEditors.SimpleButton btnHiding; + private DevExpress.XtraEditors.SimpleButton btnHelp; + private DevExpress.XtraEditors.PanelControl pl_templete; + private DevExpress.XtraEditors.ComboBoxEdit cb_templete; + private DevExpress.XtraEditors.LabelControl lbl_templete; + private DevExpress.XtraEditors.PanelControl pl_input; + private DevExpress.XtraEditors.ComboBoxEdit cb_input; + private DevExpress.XtraEditors.TextEdit txt_input; + private DevExpress.XtraEditors.LabelControl labelControl2; + private DevExpress.XtraEditors.SimpleButton btn_input; + private DevExpress.XtraEditors.DropDownButton dpbImport; + private DevExpress.XtraEditors.SimpleButton btnBillAdd; + private DevExpress.XtraEditors.SimpleButton btnBillApply; + private D \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmBillInfo.cs b/插件库/Lskj.PubBomImportNew/FrmBillInfo.cs new file mode 100644 index 0000000..af22741 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmBillInfo.cs @@ -0,0 +1,609 @@ +using DevExpress.XtraGrid.Columns; +using DevExpress.XtraGrid.Views.Grid; +using DevExpress.XtraTreeList.Columns; +using Lskj.Business; +using Lskj.Business.Impl; +using Lskj.Control; +using Lskj.Control.Model; +using Lskj.Core; +using Lskj.Data; +using Lskj.Model; +using Lskj.Util; +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; + +namespace Lskj.PubBomImport +{ + public partial class FrmBillInfo : UserControl + { + public DynamicBomImport Model; + public DynamicBillModel SysModel; + public BillModel billModel; + public MyControl ControlObj; + public event EventHandler OnControlSourceBind; + /// + /// 单据明细列 + /// + private DataTable _detailColumns; + private string guidField = "xxxxx_guid"; + /// + /// 保存或修改时报错信息 + /// + public string SaveErrorMessage = string.Empty; + public GridView GcMainView + { + get { return gcMain.GridView; } + } + public FrmBillInfo() + { + InitializeComponent(); + } + public void OnLoad(DynamicBomImport mainModel) + { + Model = mainModel; + GetControlData(mainModel); + InitControlView(); + SetControlData(); + } + public void GetControlData(DynamicBomImport Model) + { + string[] args = new[] { Model.FormText, Model.UserId, Model.UserName, Model.Privilege, Model.ModuleCode, "", Model.ModuleCode }; + SysModel = new DynamicBillModel(args); + SysModel.BillMasterSql = Model.BillMasterSql; + SysModel.BillDetailSql = ""; + DataRow modelRow = BillImpl.GetBillInfo(SysModel.ModuleCode);//获取单个模块信息 + billModel = new BillModel(modelRow);//初始化类的新实例。 + if (billModel != null) + { + billModel.TypeName = string.IsNullOrEmpty(SysModel.BillMasterSql) ? SysModel.FormText : billModel.TypeName;// 模块名称 + string masterPreFix = BaseImpl.GetColumnPrefix(billModel.MasterTable);// 主表列前缀 + billModel.MasterPreFix = masterPreFix; + string detailPreFix = BaseImpl.GetColumnPrefix(billModel.DetailTable);// 明细表列前缀 + billModel.DetailPreFix = detailPreFix; + billModel.DetailOrderField = billModel.DetailPreFix + "lsidx_id";// 单据来源id + if (SystemInfo.Instance.IsNotBillDetailOrder)//禁用排序 + { + billModel.DetailOrderField = string.Empty; + } + } + DataRow menuRow = BaseImpl.GetMenuConfigTab(SysModel.ModuleId);//获取菜单其他配置 + if (menuRow != null) + { + billModel.BillSourceIds = menuRow.Table.Columns.Contains("BillSourceIds") ? (menuRow["BillSourceIds"] + "").Trim(',') : string.Empty; + billModel.BillFlag = menuRow.Table.Columns.Contains("BillFlag") && !string.IsNullOrEmpty(menuRow["BillFlag"] + "") ? Convert.ToInt32(menuRow["BillFlag"] + "") : -1; + } + DataTable controls = BaseModuleImpl.GetControlLocation(billModel.FormKey, SysModel.ModuleCode); + DataTable groups = BaseModuleImpl.GetAddGroupData(billModel.FormKey);//获取主信息分组数据 + ControlObj = new MyControl() { Model = SysModel };//主表控件 + ControlObj.OtherParams = SysModel.OtherParams(); + ControlObj.OnDataSourceBindCallBack += (s, e) => + { + if (OnControlSourceBind != null) + { + OnControlSourceBind(null, null); + } + }; + ControlObj.InitControl(controls, this.pl_main_center_master, groups); + if (SysModel.GridEnumObj == GridEnum.BandedGridView || billModel.AutoMultiHeader == 1) + { + this.pl_main_center_detail.Controls.Clear(); + this.gcMain = new BandedGridControlEx(); + this.gcMain.Model = SysModel; + this.gcMain.Dock = DockStyle.Fill; + this.pl_main_center_detail.Controls.Add(this.gcMain); + } + _detailColumns = BillImpl.GetDetailColumns(SysModel.ModuleCode);//初始化单据明细列 + if (SysModel.GridEnumObj == GridEnum.BandedGridView || billModel.AutoMultiHeader == 1) + { + //多表头sql要增加一个判断,否则多表头会出错 + _detailColumns = BillImpl.GetDetailColumns(SysModel.ModuleCode, true);//初始化单据明细列 + } + this.gcMain.DisableFieldSources = billModel.DisableFieldSources; + this.gcMain.Model = SysModel; + this.gcMain.ParentControl = ControlObj;//把主表控件赋给 单据主表控件、基础档案查询条件控件等等 + this.gcMain.SetEditColumns(_detailColumns, GridCustomColumnStruct.BillDetailGridView + billModel.FormKey);//设置可编辑列 + } + public void InitControlView() + { + + } + public void SetControlData() + { + + } + public void InitializeHeader(DataRow parentRow, string controlSql) + { + // 新增 + if (!string.IsNullOrEmpty(controlSql)) + { + string billMasterSql = controlSql; + billMasterSql = ReplaceHelper.ReplaceRowParam(parentRow, billMasterSql); + // 处理单据表头数据 + DataRow row = BillImpl.GetDataRowResult(billMasterSql); + if (row != null) + { + ControlObj.SetAllControlValue(row, true); + } + } + } + public void InitializeHeader(DataRow rowItem) + { + // 新增 + if (rowItem != null) + { + ControlObj.SetAllControlValue(rowItem, true); + } + } + public bool BillSave(ref string billNo, int comfirm = 0, bool canTipMsg = true) + { + bool saveResult = false; + if (ControlObj.VerifyNull()) + { + // 保存之前先进行表格更新 + if (billModel.DetailTreeTable) + { + (this.gcMain as TreeGridControlEx).TreeListObj.PostEditor(); + } + else + { + this.gcMain.GridView.PostEditor(); + this.gcMain.GridView.UpdateCurrentRow(); + } + try + { + if (this.gcMain.VerifyNull()) + { + if (this.gcMain.RepeatedVerificationNames.Count > 0 && this.gcMain.VerifyDuplicateColumns()) + { + //MessageUtil.Show("表格中数据内容重复,保存失败!"); + return saveResult; + } + billNo = this.lblOrderNo.Text.Trim(); + string detailGuid = Guid.NewGuid().ToString(); + string masterSql = billModel.SaveState ? GetUpdateRecord(billNo) : GetAddRecord(ref billNo); + string detailSql = GetDetailRecord(detailGuid, billNo).ToString(); + // 检查单据头数据合法性 + if (string.IsNullOrEmpty(masterSql)) return false; + // 验证明细合法性 + if (string.IsNullOrEmpty(detailSql) && !billModel.SaveNullDetail) + { + MessageUtil.Show(ResourceKeys.BillDetailIsNotNull); + return false; + } + string tipMsg = string.Empty; + int result = BillImpl.BillSave(masterSql, detailSql, billModel.DetailTable, ref billNo, detailGuid, billModel.BillSeq, billModel.SaveState ? 2 : 1, comfirm, out tipMsg, 0, billModel.NewVer); + if (result == 1) + { + saveResult = true; + } + else + { + throw new Exception($"保存Bom失败\r\n{tipMsg}"); + } + } + } + catch (Exception ex) + { + throw new Exception($"保存Bom失败\r\n{ex.Message}"); + } + } + return saveResult; + } + public bool BillSaveSql(string guid, int comfirm = 0, bool canTipMsg = true) + { + bool saveResult = false; + if (ControlObj.VerifyNull()) + { + // 保存之前先进行表格更新 + if (billModel.DetailTreeTable) + { + (this.gcMain as TreeGridControlEx).TreeListObj.PostEditor(); + } + else + { + this.gcMain.GridView.PostEditor(); + this.gcMain.GridView.UpdateCurrentRow(); + } + try + { + if (this.gcMain.VerifyNull()) + { + if (this.gcMain.RepeatedVerificationNames.Count > 0 && this.gcMain.VerifyDuplicateColumns()) + { + //MessageUtil.Show("表格中数据内容重复,保存失败!"); + return saveResult; + } + string billNo = billModel.SaveState ? this.lblOrderNo.Text.Trim() : Guid.NewGuid() + ""; + string detailGuid = Guid.NewGuid().ToString(); + string masterSql = billModel.SaveState ? GetUpdateRecord(billNo) : GetAddRecord(ref billNo); + string detailSql = GetDetailRecord(detailGuid, billNo).ToString(); + // 检查单据头数据合法性 + if (string.IsNullOrEmpty(masterSql)) return false; + // 验证明细合法性 + if (string.IsNullOrEmpty(detailSql) && !billModel.SaveNullDetail) + { + MessageUtil.Show(ResourceKeys.BillDetailIsNotNull); + return false; + } + string tipMsg = string.Empty; + + //param[0].Value = masterSql; + //param[1].Value = billNo; + //param[2].Value = detailGuid; + //param[3].Value = ERPInfo.Instance.UserId; + //param[4].Value = billWay;// --1新增,2为修改,3为删除 + //param[5].Value = billSeq; + //param[6].Value = ""; + //param[7].Value = auditFlag; + //param[8].Value = comfirm; + SqlHelper.ExecuteNonQuery($"delete p_bomImportExecTab where guid = '{guid}'"); + SqlHelper.ExecuteNonQuery($"insert into p_bomImportExecTab (guid,detailTable,masterSql,detailSql,billNo,detailGuid,UserId,billWay,billSeq,auditFlag,comfirm,newVer) " + + $"values ('{guid}','{billModel.DetailTable}','{masterSql.Replace("'", "''")}','{detailSql.Replace("'", "''")}','{billNo}','{detailGuid.Replace("'", "''")}','{ERPInfo.Instance.UserId}','{(billModel.SaveState ? 2 : 1)}','{billModel.BillSeq}','0','{comfirm}','{billModel.NewVer}')"); + //int result = BillImpl.BillSave(masterSql, detailSql, billModel.DetailTable, ref billNo, detailGuid, billModel.BillSeq, billModel.SaveState ? 2 : 1, comfirm, out tipMsg, 0, billModel.NewVer); + //if (result == 1) + //{ + // saveResult = true; + //} + //else + //{ + // throw new Exception($"保存Bom失败\r\n{tipMsg}"); + //} + } + } + catch (Exception ex) + { + throw new Exception($"保存Bom失败\r\n{ex.Message}"); + } + } + return saveResult; + } + private string GetUpdateRecord(string parmaryValue) + { + StringBuilder updateBuilder = new StringBuilder(); + DataTable DetailedProperties = BaseImpl.GetDataTableResult(string.Format("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name = '{0}'", billModel.MasterTable)); + string errorMessage = string.Empty;//数据不符合数据库规范的信息 + // 修改单据 + foreach (ControlModel model in this.ControlObj.ControlModels) + { + if (!model.IsSave || + model.FieldName.Equals(billModel.RtagidKey, StringComparison.OrdinalIgnoreCase) || + model.FieldType == ControlType.LabPic || + model.FieldType == ControlType.LabPicEx) + continue; + BaseUserControl userControl = this.ControlObj.FindControl(model); + if (userControl != null) + { + string fieldValue = this.ControlObj.GetControlValue(model); + if (SystemInfo.Instance.TrimWhiteSpace) + fieldValue = fieldValue.Trim(); + if (fieldValue == "****") continue; + + errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(DetailedProperties, model, fieldValue); + if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0; + + updateBuilder.Append(string.IsNullOrEmpty(fieldValue) ? string.Format("{0}={1}", model.FieldName, this.ControlObj.GetNullValue(model)) : string.Format("{0}=N'{1}',", model.FieldName, fieldValue.Contains("'") ? fieldValue.Replace("'", "''") : fieldValue)); + + } + } + if (!string.IsNullOrWhiteSpace(errorMessage)) SaveErrorMessage = "表头错误:" + errorMessage; + return string.Format("update {0} set {1} where {2}='{3}'", billModel.MasterTable, updateBuilder.ToString().TrimEnd(','), billModel.PrimaryKey, parmaryValue); + } + private string GetAddRecord(ref string parmaryValue) + { + if (billModel.NewVer == 0) + { + // 检查当前的单据号是否已被占用. + string newBillNo = BillImpl.GetBillNo(billModel.BillSeq); + if (!parmaryValue.Equals(newBillNo)) + { + if (MessageUtil.Show(ResourceKeys.BillRecordRepeat, MessageBoxButtons.YesNo) == DialogResult.No) + { + return string.Empty; + } + else + { + this.lblOrderNo.Text = newBillNo; + parmaryValue = newBillNo; + } + } + } + StringBuilder fieldBuilder = new StringBuilder(); + StringBuilder valueBuilder = new StringBuilder(); + DataTable DetailedProperties = BaseImpl.GetDataTableResult(string.Format("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name = '{0}'", billModel.MasterTable)); + string errorMessage = string.Empty;//数据不符合数据库规范的信息 + foreach (ControlModel model in this.ControlObj.ControlModels) + { + if (!model.IsSave || + model.FieldName.Equals(billModel.PrimaryKey, StringComparison.OrdinalIgnoreCase) || + model.FieldName.Equals(billModel.RtagidKey, StringComparison.OrdinalIgnoreCase) || + model.FieldType == ControlType.LabPic || + model.FieldType == ControlType.LabPicEx) + continue; + + string fieldValue = this.ControlObj.GetControlValue(model); + if (SystemInfo.Instance.TrimWhiteSpace) + fieldValue = fieldValue.Trim(); + if (fieldValue == "****") continue; + + errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(DetailedProperties, model, fieldValue); + if (string.IsNullOrEmpty(fieldValue) && model.Isintordecimal) fieldValue = "0";//数值保存时为空的话默认保存为0; + + fieldBuilder.Append(model.FieldName + ","); + valueBuilder.Append(string.IsNullOrEmpty(fieldValue) ? this.ControlObj.GetNullValue(model) : string.Format("N'{0}',", fieldValue)); + + } + if (!string.IsNullOrWhiteSpace(errorMessage)) SaveErrorMessage = "表头错误:" + errorMessage; + // 增加主键 + fieldBuilder.Append(billModel.PrimaryKey); + //valueBuilder.Append("N'" + parmaryValue + "'"); + valueBuilder.Append("N'" + parmaryValue + "'"); + // 增加红蓝字单标记 + fieldBuilder.Append("," + billModel.RtagidKey); + valueBuilder.Append(",N'" + (rdRed.Checked ? 1 : 0) + "'"); + return string.Format("insert into {0}({1}) values ({2})", billModel.MasterTable, fieldBuilder.ToString().TrimEnd(','), valueBuilder.ToString().TrimEnd(',')); + } + private StringBuilder GetDetailRecord(string guid, string billNo) + { + // 构造明细 + StringBuilder detailBuilder = new StringBuilder(); + DataTable detailTable = this.gcMain.GridControl.DataSourceTable().TrimDeleteRows(); + if (billModel.DetailTreeTable) + { + detailTable = ((this.gcMain as TreeGridControlEx).TreeListObj.DataSource as DataTable).TrimDeleteRows(); + } + DataTable DetailedProperties = BaseImpl.GetDataTableResult(string.Format("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name = '{0}'", billModel.DetailTable + "_temp"));//单据明细性表 + if (detailTable.Rows.Count > 0) + { + int lineNumber = 1; + DataTable BillColumns = BaseImpl.GetDataTableResult(string.Format("select * from {0} where 1<>1", billModel.DetailTable)); + DataTable BillTempColumns = BaseImpl.GetDataTableResult(string.Format("select * from {0} where 1<>1", billModel.DetailTable + "_temp")); + foreach (DataRow dataRow in detailTable.Rows) + { + string errorMessage = string.Empty;//数据不符合数据库规范的信息 + StringBuilder fields = new StringBuilder(); + StringBuilder values = new StringBuilder(); + string detailSql = @"insert into " + billModel.DetailTable + "_temp" + "({0}) values({1})"; + fields.Append("sysstr,"); + values.Append("'" + guid + "',"); + foreach (DataColumn item in BillColumns.Columns) + { + if (item.ColumnName.Equals(guidField) || item.ColumnName.Equals(ERPInfo.Instance.isAddRows)) continue; + if (!BillTempColumns.Columns.Contains(item.ColumnName)) + { + string type = "varchar(100)"; + if (item.DataType == typeof(DateTime)) + { + type = "datetime"; + } + BaseImpl.ExecSqlValue(string.Format("alter table {0} add {1} {2}", billModel.DetailTable + "_temp", item.ColumnName, type)); + } + if (billModel.DetailTreeTable) + { + TreeListColumn[] TreeListColumns = (this.gcMain as TreeGridControlEx).TreeListObj.Columns.Cast().Where(x => x.FieldName.Equals(item.Caption, StringComparison.OrdinalIgnoreCase)).ToArray(); + if (TreeListColumns.Count() == 0 && item.Caption.Equals(billModel.PrimaryDetailKey)) + { + string primaryValues = dataRow[billModel.PrimaryDetailKey] + ""; + if (!string.IsNullOrWhiteSpace(primaryValues)) + { + fields.Append(item.ColumnName + ","); + values.Append("N'" + primaryValues.Replace("'", "''") + "',"); + } + } + if (TreeListColumns.Count() == 0) continue; + } + else + { + GridColumn[] gridColumns = gcMain.GridView.Columns.Cast().Where(x => x.FieldName.Equals(item.Caption, StringComparison.OrdinalIgnoreCase)).ToArray(); + if (gridColumns.Count() == 0 && item.Caption.Equals(billModel.PrimaryDetailKey)) + { + string primaryValues = dataRow[billModel.PrimaryDetailKey] + ""; + if (!string.IsNullOrWhiteSpace(primaryValues)) + { + fields.Append(item.ColumnName + ","); + values.Append("N'" + primaryValues.Replace("'", "''") + "',"); + } + } + if (gridColumns.Count() == 0) continue; + } + fields.Append(item.ColumnName + ","); + string fieldValue = dataRow.Table.Columns.Contains(item.ColumnName) ? dataRow[item.ColumnName] + "" : string.Empty; + //if (SystemInfo.Instance.TrimWhiteSpace) + // fieldValue = fieldValue.Trim(); + if (item.ColumnName.Equals(billModel.PrimaryDetailKey, StringComparison.OrdinalIgnoreCase)) + fieldValue = billNo; + if (!string.IsNullOrWhiteSpace(fieldValue)) + { + values.Append(item.DataType == typeof(DateTime) ? "'" + Convert.ToDateTime(fieldValue).ToString("yyyy-MM-dd HH:mm:ss") + "'," : fieldValue.Contains("'") ? "N'" + fieldValue.Replace("'", "''") + "'," : "N'" + fieldValue + "',"); + } + else + { + if (item.DataType == typeof(Decimal) || + item.DataType == typeof(Double) || + item.DataType == typeof(Int16) || + item.DataType == typeof(Int32) || + item.DataType == typeof(Int64)) + values.Append("0,"); + else if (item.DataType == typeof(DateTime)) + { + values.Append("NULL,"); + } + else + { + values.Append("'',"); + } + } + errorMessage = errorMessage + DatabaseFormatJudgment.SaveOrModifyBalidation(_detailColumns, DetailedProperties, dataRow, item, fieldValue); + } + detailBuilder.AppendFormat(detailSql, fields.ToString().Trim(','), values.ToString().Trim(',')); + if (!string.IsNullOrWhiteSpace(errorMessage)) errorMessage = "第" + lineNumber + "行:" + errorMessage; + lineNumber++; + } + } + return detailBuilder; + } + private void SetBillStatus(DataRow rowItem) + { + if (rowItem != null) + { + // 单据为修改状态,无需设置赋值时不需要计算面板属性 + bool isReadOnly = !string.IsNullOrEmpty(billModel.ModifyCond) && !ReplaceHelper.ReplaceRowParamCond(rowItem, billModel.ModifyCond); + this.ControlObj.CanExecControl = false; // 单据为修改状态时,无需计算面板属性 + this.lbTitle.Text = billModel.TypeName + "(修改)"; + this.lblOrderNo.Text = rowItem[billModel.PrimaryKey] + ""; + this.rdBlue.Checked = "0".Equals(rowItem[billModel.RtagidKey] + ""); + this.rdRed.Checked = "1".Equals(rowItem[billModel.RtagidKey] + ""); + billModel.SaveState = true; + this.rdBlue.Enabled = this.rdRed.Enabled = false; + this.ControlObj.SetReadOnlyAllControl(isReadOnly); + this.ControlObj.SetAllControlValue(rowItem); + this.dbpFP.Enabled = this.btnDelete.Enabled = this.btnBillSave.Enabled = this.btnBillApply.Enabled = !isReadOnly; + this.ControlObj.CanExecControl = true; + this.cb_input.Enabled = this.btn_input.Enabled = this.txt_input.Enabled = !isReadOnly; + this.labelControl1.ForeColor = this.lblOrderNo.ForeColor = this.lbTitle.ForeColor = rdBlue.Checked ? Color.Blue : Color.Red; + this.gcMain.GridView.OptionsBehavior.Editable = !isReadOnly; + // 上一次查询 + int oldRowHandle = this.gcMain.GridView.FocusedRowHandle; + //获取数据源并排序 + DataTable dt = BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, billModel.DetailSql)); + if (dt.Columns.Contains(billModel.DetailOrderField)) + { + DataView dataView = dt.AsDataView(); + dataView.Sort = billModel.DetailOrderField; + dt = dataView.ToTable(); + } + if (billModel.DetailTreeTable) + { + //判断是否有tap_id和tap_pid + (this.gcMain as TreeGridControlEx).SetGridViewDataSourceGenerateID(dt); + this.gcMain.GridView.SelectRowHandler(oldRowHandle); + } + else + { + this.gcMain.GridControl.DataSource = dt; + this.gcMain.GridView.SelectRowHandler(oldRowHandle); + if (billModel.SelectLast && dt.Rows.Count > 0) + { + this.gcMain.GridView.SelectRowHandler(dt.Rows.Count - 1); + } + } + BaseUserControl userControl = this.ControlObj.FindControl(billModel.RtagidKey); + if (userControl != null) + { + userControl.EditText = this.rdRed.Checked ? "1" : "0"; + } + } + else + { + // 单据为新增状态 + this.dbpFP.Enabled = this.btnDelete.Enabled = this.btnBillSave.Enabled = this.btnBillApply.Enabled = true; + this.lbTitle.Text = billModel.TypeName + "(新增)"; + this.lblOrderNo.Text = BillImpl.GetBillNo(billModel.BillSeq); + this.cb_input.Enabled = this.btn_input.Enabled = this.txt_input.Enabled = true; + this.cb_templete.Enabled = true; + billModel.SaveState = false; + this.ControlObj.SetReadOnlyAllControl(false); + this.rdBlue.Enabled = this.rdRed.Enabled = true; + // 通过右键菜单打开单据,假如明细有数据则在初始化时使用传入数据. + if (billModel.DetailTreeTable) + { + (this.gcMain as TreeGridControlEx).TreeListObj.OptionsBehavior.Editable = true; + (this.gcMain as TreeGridControlEx).SetGridViewDataSourceGenerateID(BillImpl.GetDataTableResult(billModel.DetailSql)); + } + else + { + this.gcMain.GridView.OptionsBehavior.Editable = true; + this.gcMain.GridControl.DataSource = BillImpl.GetDataTableResult(billModel.DetailSql); + } + BaseUserControl userControl = this.ControlObj.FindControl(billModel.RtagidKey); + if (userControl != null) + { + userControl.EditText = this.rdRed.Checked ? "1" : "0"; + } + } + this.lbTitle.Invalidate(); + } + public void OnBillAdd() + { + this.SetBillStatus(null); + this.ControlObj.ResetControlValue(billModel.ManuallyTriggerCorrelation, true); + } + public void AddOrUpdateBill(DataRow rowItem, DataTable newSource) + { + string masterSql = rowItem == null ? billModel.MasterSql.Replace("{" + billModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, billModel.MasterSql); + // 加载单据信息 + DataRow mainRow = BillImpl.GetDataRowResult(masterSql); + this.SetBillStatus(mainRow); + if (!billModel.SaveState) + { + this.InitializeHeader(rowItem); + } + else + { + if (rowItem != null) + { + DataRow dataRow = BaseImpl.GetDataRowResult($"select '{rowItem["bak"] + ""}' as bak,'{rowItem["bombb"] + ""}' as bombb,'{rowItem["bombc"] + ""}' as bombc"); + this.InitializeHeader(dataRow); + } + } + if (mainRow != null) + { + //更新 + DataTable source = this.gcMain.GridControl.DataSourceTable(); + + List deleteRows = new List(); + foreach (DataRow sourceRow in source.Rows) + { + string productId = sourceRow["ProductId"] + ""; + DataRow newSourceRow = newSource.Rows.Cast().Where(n => (n["ProductId"] + "").Equals(productId)).FirstOrDefault(); + if (newSourceRow != null) + { + sourceRow["tamount"] = newSourceRow["tamount"]; + sourceRow["amount"] = newSourceRow["amount"]; + sourceRow["bak"] = newSourceRow["bak"]; + sourceRow["bombb"] = newSourceRow["bombb"]; + sourceRow["bombc"] = newSourceRow["bombc"]; + newSource.Rows.Remove(newSourceRow); + } + else + { + deleteRows.Add(sourceRow); + } + } + foreach (DataRow deleteRow in deleteRows) + { + source.Rows.Remove(deleteRow); + } + foreach (DataRow newSourceRow in newSource.Rows) + { + DataRow newRow = source.NewRow(); + newRow.ItemArray = newSourceRow.ItemArray; + source.Rows.Add(newRow); + } + } + else + { + //新增 + this.gcMain.GridControl.DataSource = newSource; + } + } + public void AddOrUpdateBillByZZQD(DataRow rowItem, DataTable newSource) + { + string masterSql = rowItem == null ? billModel.MasterSql.Replace("{" + billModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, billModel.MasterSql); + // 加载单据信息 + DataRow mainRow = BillImpl.GetDataRowResult(masterSql); + this.SetBillStatus(mainRow); + if (!billModel.SaveState) + { + this.InitializeHeader(rowItem); + } + string controlSql = "select '' as billdocument_id,'0' affirmer,'0' rtagid,'{材料代码}' as productid"; + if (mainRow != null) + { + //更新 + DataTable source = this.gcMain.GridC \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmBillInfo.resx b/插件库/Lskj.PubBomImportNew/FrmBillInfo.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmBillInfo.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmMain.Designer.cs b/插件库/Lskj.PubBomImportNew/FrmMain.Designer.cs new file mode 100644 index 0000000..9d15c54 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmMain.Designer.cs @@ -0,0 +1,291 @@ + +namespace Lskj.PubBomImportNew +{ + partial class FrmMain + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.btnImport = new DevExpress.XtraEditors.SimpleButton(); + this.btnRead = new DevExpress.XtraEditors.SimpleButton(); + this.pl_bottom = new DevExpress.XtraEditors.PanelControl(); + this.btnCancel = new DevExpress.XtraEditors.SimpleButton(); + this.btnOk = new DevExpress.XtraEditors.SimpleButton(); + this.pl_cond = new DevExpress.XtraEditors.PanelControl(); + this.condTxtEdit = new DevExpress.XtraEditors.TextEdit(); + this.lb_cond = new System.Windows.Forms.Label(); + this.pl_purview = new DevExpress.XtraEditors.PanelControl(); + this.purview_Mulit = new Lskj.Control.LabelMultiAutoTextEdit(); + this.lb_purview = new System.Windows.Forms.Label(); + this.tips = new DevExpress.XtraEditors.PanelControl(); + this.tipsEdit = new DevExpress.XtraEditors.TextEdit(); + this.splitMainContainer = new DevExpress.XtraEditors.SplitContainerControl(); + this.gcMain = new Lskj.Control.GridControlEx(); + this.gc_Right = new Lskj.Control.GridControlEx(); + ((System.ComponentModel.ISupportInitialize)(this.pl_bottom)).BeginInit(); + this.pl_bottom.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pl_cond)).BeginInit(); + this.pl_cond.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.condTxtEdit.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pl_purview)).BeginInit(); + this.pl_purview.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.tips)).BeginInit(); + this.tips.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.tipsEdit.Properties)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.splitMainContainer)).BeginInit(); + this.splitMainContainer.SuspendLayout(); + this.SuspendLayout(); + // + // btnImport + // + this.btnImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnImport.Location = new System.Drawing.Point(764, 10); + this.btnImport.Margin = new System.Windows.Forms.Padding(4); + this.btnImport.Name = "btnImport"; + this.btnImport.Size = new System.Drawing.Size(97, 31); + this.btnImport.TabIndex = 11; + this.btnImport.Text = "导入数据"; + // + // btnRead + // + this.btnRead.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnRead.Location = new System.Drawing.Point(656, 10); + this.btnRead.Margin = new System.Windows.Forms.Padding(4); + this.btnRead.Name = "btnRead"; + this.btnRead.Size = new System.Drawing.Size(97, 31); + this.btnRead.TabIndex = 10; + this.btnRead.Text = "读取Excel"; + // + // pl_bottom + // + this.pl_bottom.Appearance.BackColor = System.Drawing.Color.Transparent; + this.pl_bottom.Appearance.Options.UseBackColor = true; + this.pl_bottom.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.pl_bottom.Controls.Add(this.btnImport); + this.pl_bottom.Controls.Add(this.btnCancel); + this.pl_bottom.Controls.Add(this.btnRead); + this.pl_bottom.Controls.Add(this.btnOk); + this.pl_bottom.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pl_bottom.Location = new System.Drawing.Point(0, 549); + this.pl_bottom.Margin = new System.Windows.Forms.Padding(4); + this.pl_bottom.Name = "pl_bottom"; + this.pl_bottom.Size = new System.Drawing.Size(872, 50); + this.pl_bottom.TabIndex = 2; + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(120, 10); + this.btnCancel.Margin = new System.Windows.Forms.Padding(4); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(97, 31); + this.btnCancel.TabIndex = 11; + this.btnCancel.Text = "清除绑定"; + // + // btnOk + // + this.btnOk.Location = new System.Drawing.Point(12, 10); + this.btnOk.Margin = new System.Windows.Forms.Padding(4); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(97, 31); + this.btnOk.TabIndex = 10; + this.btnOk.Text = "保存绑定"; + // + // pl_cond + // + this.pl_cond.Appearance.BackColor = System.Drawing.Color.White; + this.pl_cond.Appearance.Options.UseBackColor = true; + this.pl_cond.Controls.Add(this.condTxtEdit); + this.pl_cond.Controls.Add(this.lb_cond); + this.pl_cond.Dock = System.Windows.Forms.DockStyle.Top; + this.pl_cond.Location = new System.Drawing.Point(0, 0); + this.pl_cond.Margin = new System.Windows.Forms.Padding(4); + this.pl_cond.Name = "pl_cond"; + this.pl_cond.Size = new System.Drawing.Size(872, 42); + this.pl_cond.TabIndex = 12; + // + // condTxtEdit + // + this.condTxtEdit.Dock = System.Windows.Forms.DockStyle.Fill; + this.condTxtEdit.Location = new System.Drawing.Point(87, 2); + this.condTxtEdit.Name = "condTxtEdit"; + this.condTxtEdit.Properties.Appearance.BackColor = System.Drawing.Color.White; + this.condTxtEdit.Properties.Appearance.Options.UseBackColor = true; + this.condTxtEdit.Properties.AutoHeight = false; + this.condTxtEdit.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.condTxtEdit.Size = new System.Drawing.Size(783, 38); + this.condTxtEdit.TabIndex = 5; + // + // lb_cond + // + this.lb_cond.BackColor = System.Drawing.Color.White; + this.lb_cond.Dock = System.Windows.Forms.DockStyle.Left; + this.lb_cond.Location = new System.Drawing.Point(2, 2); + this.lb_cond.Name = "lb_cond"; + this.lb_cond.Size = new System.Drawing.Size(85, 38); + this.lb_cond.TabIndex = 3; + this.lb_cond.Text = "筛选条件:"; + this.lb_cond.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // pl_purview + // + this.pl_purview.Appearance.BackColor = System.Drawing.Color.White; + this.pl_purview.Appearance.Options.UseBackColor = true; + this.pl_purview.Controls.Add(this.purview_Mulit); + this.pl_purview.Controls.Add(this.lb_purview); + this.pl_purview.Cursor = System.Windows.Forms.Cursors.Default; + this.pl_purview.Dock = System.Windows.Forms.DockStyle.Top; + this.pl_purview.Location = new System.Drawing.Point(0, 42); + this.pl_purview.Margin = new System.Windows.Forms.Padding(4); + this.pl_purview.Name = "pl_purview"; + this.pl_purview.Size = new System.Drawing.Size(872, 21); + this.pl_purview.TabIndex = 13; + // + // purview_Mulit + // + this.purview_Mulit.BackColor = System.Drawing.Color.White; + this.purview_Mulit.Dock = System.Windows.Forms.DockStyle.Fill; + this.purview_Mulit.EditText = ""; + this.purview_Mulit.FontSize = 0F; + this.purview_Mulit.LabelText = "名称"; + this.purview_Mulit.Location = new System.Drawing.Point(135, 2); + this.purview_Mulit.Margin = new System.Windows.Forms.Padding(4); + this.purview_Mulit.Model = null; + this.purview_Mulit.Name = "purview_Mulit"; + this.purview_Mulit.NullText = ""; + this.purview_Mulit.ReadOnly = false; + this.purview_Mulit.Required = false; + this.purview_Mulit.Size = new System.Drawing.Size(735, 17); + this.purview_Mulit.TabIndex = 4; + this.purview_Mulit.TextBoxProhibition = false; + // + // lb_purview + // + this.lb_purview.BackColor = System.Drawing.Color.White; + this.lb_purview.Dock = System.Windows.Forms.DockStyle.Left; + this.lb_purview.Location = new System.Drawing.Point(2, 2); + this.lb_purview.Name = "lb_purview"; + this.lb_purview.Size = new System.Drawing.Size(133, 17); + this.lb_purview.TabIndex = 3; + this.lb_purview.Text = "条件可编辑人员:"; + this.lb_purview.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // tips + // + this.tips.Appearance.BackColor = System.Drawing.Color.White; + this.tips.Appearance.Options.UseBackColor = true; + this.tips.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Office2003; + this.tips.Controls.Add(this.tipsEdit); + this.tips.Dock = System.Windows.Forms.DockStyle.Top; + this.tips.Location = new System.Drawing.Point(0, 63); + this.tips.Margin = new System.Windows.Forms.Padding(4); + this.tips.Name = "tips"; + this.tips.Size = new System.Drawing.Size(872, 42); + this.tips.TabIndex = 14; + // + // tipsEdit + // + this.tipsEdit.Dock = System.Windows.Forms.DockStyle.Fill; + this.tipsEdit.EditValue = "请导入Excel模板"; + this.tipsEdit.Location = new System.Drawing.Point(2, 2); + this.tipsEdit.Name = "tipsEdit"; + this.tipsEdit.Properties.Appearance.BackColor = System.Drawing.Color.White; + this.tipsEdit.Properties.Appearance.ForeColor = System.Drawing.Color.Red; + this.tipsEdit.Properties.Appearance.Options.UseBackColor = true; + this.tipsEdit.Properties.Appearance.Options.UseForeColor = true; + this.tipsEdit.Properties.AutoHeight = false; + this.tipsEdit.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + this.tipsEdit.Properties.ReadOnly = true; + this.tipsEdit.Size = new System.Drawing.Size(868, 38); + this.tipsEdit.TabIndex = 6; + // + // splitMainContainer + // + this.splitMainContainer.Appearance.BackColor = System.Drawing.Color.Transparent; + this.splitMainContainer.Appearance.Options.UseBackColor = true; + this.splitMainContainer.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Default; + this.splitMainContainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitMainContainer.Location = new System.Drawing.Point(0, 105); + this.splitMainContainer.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.splitMainContainer.Name = "splitMainContainer"; + this.splitMainContainer.Panel1.Controls.Add(this.gcMain); + this.splitMainContainer.Panel1.Text = "Panel1"; + this.splitMainContainer.Panel2.Controls.Add(this.gc_Right); + this.splitMainContainer.Panel2.Text = "Panel2"; + this.splitMainContainer.Size = new System.Drawing.Size(872, 444); + this.splitMainContainer.SplitterPosition = 500; + this.splitMainContainer.TabIndex = 17; + this.splitMainContainer.Text = "splitContainerControl1"; + // + // gcMain + // + this.gcMain.AdapterObj = null; + this.gcMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.gcMain.Location = new System.Drawing.Point(0, 0); + this.gcMain.Margin = new System.Windows.Forms.Padding(4); + this.gcMain.Name = "gcMain"; + this.gcMain.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum; + this.gcMain.Size = new System.Drawing.Size(500, 444); + this.gcMain.TabIndex = 16; + // + // gc_Right + // + this.gc_Right.AdapterObj = null; + this.gc_Right.Dock = System.Windows.Forms.DockStyle.Fill; + this.gc_Right.Location = new System.Drawing.Point(0, 0); + this.gc_Right.Margin = new System.Windows.Forms.Padding(4); + this.gc_Right.Name = "gc_Right"; + this.gc_Right.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum; + this.gc_Right.Size = new System.Drawing.Size(367, 444); + this.gc_Right.TabIndex = 18; + // + // FrmMain + // + this.Appearance.BackColor = System.Drawing.SystemColors.Control; + this.Appearance.Options.UseBackColor = true; + this.Appearance.Options.UseFont = true; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(872, 599); + this.Controls.Add(this.splitMainContainer); + this.Controls.Add(this.tips); + this.Controls.Add(this.pl_purview); + this.Controls.Add(this.pl_cond); + this.Controls.Add(this.pl_bottom); + this.Name = "FrmMain"; + this.Opacity = 0D; + this.Text = "表格导入"; + ((System.ComponentModel.ISupportInitialize)(this.pl_bottom)).EndInit(); + this.pl_bottom.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pl_cond)).EndInit(); + this.pl_cond.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.condTxtEdit.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pl_purview)).EndInit(); + this.pl_purview.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.tips)).EndInit(); + this.tips.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.tipsEdit.Properties)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.splitMainContainer)).EndInit(); + this.splitMainContainer.ResumeLayout(false); + this.ResumeLayout(f \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmMain.cs b/插件库/Lskj.PubBomImportNew/FrmMain.cs new file mode 100644 index 0000000..2f1a7a6 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmMain.cs @@ -0,0 +1,1557 @@ +using DevExpress.XtraEditors.Repository; +using DevExpress.XtraGrid.Columns; +using DevExpress.XtraGrid.Views.BandedGrid; +using DevExpress.XtraGrid.Views.Grid; +using Lskj.Business; +using Lskj.Business.Impl; +using Lskj.Control; +using Lskj.Control.Model; +using Lskj.Core; +using Lskj.Data; +using Lskj.Model; +using Lskj.PubBomImportNew; +using Lskj.Util; +using NPOI.HSSF.UserModel; +using NPOI.SS.UserModel; +using NPOI.SS.Util; +using NPOI.XSSF.UserModel; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; + +namespace Lskj.PubBomImportNew +{ + public partial class FrmMain : BaseForm + { + public FrmMain() + { + InitializeComponent(); + this.Load += FrmMain_Load; + } + public DynamicBomImportNew Model; + public int FirstRowIndex = 0; + /// + /// 匹配搜索框列 + /// + private RepositoryItemGridLookUpEdit searchEdit = new RepositoryItemGridLookUpEdit(); + /// + /// 缓存列对象 + /// + private static List ColumnList = new List(); + /// + /// 导入文件名 + /// + private string importFileName = ""; + private static Dictionary ValueGridColumnTable; + private static Dictionary LookupParentKey; + private static List _checkColumns; + private static string _treeColumnName; + #region 事件 + /// + /// 初始化时 + /// + /// + /// + private void FrmMain_Load(object sender, EventArgs e) + { + try + { + InitlizeSpiltLocation(); + InitEvents(); + InitGridColumns(); + InitMulitControl(); + InitDataSource(); + } + catch (Exception ex) + { + WaitForm.HideForm(); + MessageUtil.Show(ex.Message); + this.Close(); + } + } + /// + /// 导入按钮点击 + /// + /// + /// + private void OnBtnImportClick(object sender, EventArgs e) + { + try + { + OpenFileDialog dialog = new OpenFileDialog(); + dialog.Multiselect = false; + dialog.InitialDirectory = Properties.Settings.Default.LastSelectFolder; + dialog.Title = "选择导入文件"; + dialog.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls"; + DialogResult dialogResult = dialog.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + Properties.Settings.Default.LastSelectFolder = Path.GetDirectoryName(dialog.FileName); + FrmProgress frmProgress = new FrmProgress(); + frmProgress.StartImportInFileByZB(dialog.FileName.ToList()); + } + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + } + } + /// + /// 读取按钮点击 + /// + /// + /// + private void OnBtnReadClick(object sender, EventArgs e) + { + try + { + OpenFileDialog dialog = new OpenFileDialog(); + dialog.Title = "选择导入文件"; + dialog.Filter = SystemInfo.Instance.IsXlsxFirst ? "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls" : "Excel文件(*.xls)|*.xls|Excel文件(*.xlsx)|*.xlsx"; + DialogResult result = dialog.ShowDialog(); + DataTable gcData = new DataTable(); + if (result == DialogResult.OK) + { + string fileName = importFileName = dialog.FileName; + tipsEdit.Text = string.Format("当前读取文件:{0},请绑定列后点击导入", Path.GetFileName(fileName)); + string colFields = this.gcMain.GridView.Columns.ToString(','); + int.TryParse(Model.FirstRowIndex, out FirstRowIndex); + DataTable dataTable = ExcelToDatatable(fileName, Model, Model.SheetName, FirstRowIndex); + DataTable importTable = GetSourceTable(dataTable); + DataTable sourceTable = this.gcMain.GridControl.DataSource as DataTable; + if (dataTable != null) + { + try + { + if (!string.IsNullOrEmpty(Model.ReadTableCond)) + { + DataView view = new DataView(dataTable); + view.RowFilter = Model.ReadTableCond; + dataTable = view.ToTable(); + } + } + catch (Exception) + { + } + this.gc_Right.SetGridViewDataSource(dataTable); + } + if (sourceTable != null && sourceTable.Rows.Count > 0) + { + if (sourceTable.Rows.Count != importTable.Rows.Count) + { + this.gcMain.SetGridViewDataSource(importTable); + this.condTxtEdit.Text = ""; + } + else + { + bool isComplete = true; + int rowCount = importTable.Rows.Count; + for (int i = 0; i < rowCount; i++) + { + DataRow row = importTable.Rows[i]; + int count = sourceTable.Rows.Cast().Where(n => (n["excelFieldName"] + "").Equals(row["excelFieldName"] + "")).Count(); + if (count == 0) + { + isComplete = false; + break; + } + } + if (!isComplete) + { + this.gcMain.SetGridViewDataSource(importTable); + this.condTxtEdit.Text = ""; + } + } + } + else + { + this.gcMain.SetGridViewDataSource(importTable); + this.condTxtEdit.Text = ""; + } + } + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + tipsEdit.Text = "请导入Excel模板"; + gc_Right.SetGridViewDataSource(new DataTable()); + this.DialogResult = DialogResult.Cancel; + } + } + /// + /// 确定按钮点击 + /// + /// + /// + private void OnBtnOkClick(object sender, EventArgs e) + { + try + { + string condFilter = this.condTxtEdit.Text.Trim(); + string condPurview = this.purview_Mulit.EditValue; + string unionColumn = GetUnionColumn(); + string sql = "if exists(select * from P_SpecialImportTab where moduleId = '{0}' and rightMenuName = '{1}') " + + "begin " + + "update P_SpecialImportTab set Ls_CondFilter = '{2}',Ls_UnionColumn = '{3}',Ls_CondPurview = '{4}' where moduleId = '{0}' and rightMenuName = '{1}' " + + "end " + + "else begin " + + "insert into P_SpecialImportTab (moduleId,rightMenuName,Ls_CondFilter,Ls_UnionColumn,Ls_CondPurview) values ('{0}','{1}','{2}','{3}','{4}') " + + "end"; + sql = string.Format(sql, Model.ModuleCode, Model.ModuleId, condFilter.Replace("'", "''"), unionColumn.Replace("'", "''"), condPurview.Replace("'", "''")); + SqlHelper.ExecuteNonQuery(sql); + MessageUtil.Show("保存成功"); + } + catch (Exception ex) + { + MessageUtil.Show("保存失败,原因:" + ex.Message); + } + } + /// + /// 取消按钮点击 + /// + /// + /// + private void OnBtnCancelClick(object sender, EventArgs e) + { + try + { + DataTable dataTable = this.gcMain.GridControl.DataSourceTable(); + if (dataTable != null && dataTable.Rows.Count > 0) + { + foreach (DataRow item in dataTable.Rows) + { + item["clientFieldName"] = ""; + } + } + } + catch (Exception ex) + { + MessageUtil.Show(string.Format("取消绑定列失败,原因:{0}", ex.Message)); + } + } + /// + /// 分隔条位置改变时 + /// + /// + /// + private void OnSplitMainContainerPositionChanged(object sender, EventArgs e) + { + try + { + if (this.Model != null) + { + IniHelper.Write(string.Format("PubSpecialImport_SplitMain_{0}", this.Model.ModuleCode), this.splitMainContainer.SplitterPosition + ""); + } + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + } + } + #endregion + #region 方法 + /// + /// 初始化事件绑定 + /// + private void InitEvents() + { + this.btnRead.Click += OnBtnReadClick; + this.btnImport.Click += OnBtnImportClick; + this.btnOk.Click += OnBtnOkClick; + this.btnCancel.Click += OnBtnCancelClick; + this.splitMainContainer.SplitterPositionChanged += OnSplitMainContainerPositionChanged; + } + /// + /// 设置分割条位置 + /// + private void InitlizeSpiltLocation() + { + try + { + string splitMainWidth = IniHelper.Read(string.Format("PubSpecialImport_SplitMain_{0}", this.Model.ModuleCode));//通过Key获取Value值 + if (!string.IsNullOrEmpty(splitMainWidth)) + { + this.splitMainContainer.SplitterPosition = Convert.ToInt32(splitMainWidth); + } + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + } + } + /// + /// 初始化表格列 + /// + private void InitGridColumns() + { + this.gcMain.AllowClearColumns = false; + GridColumn excelFieldNameColumn = this.gcMain.GridView.Columns.AddVisible("excelFieldName", "Excel列名"); + excelFieldNameColumn.Width = 200; + GridColumn clientFieldNameColumn = this.gcMain.GridView.Columns.AddVisible("clientFieldName", "绑定程序列"); + clientFieldNameColumn.Width = 200; + + //DataTable gridColumnsTab = BaseModuleImpl.GetBaseGridColumns(this.Model.ModuleCode); + DataTable gridColumnsTab = BillImpl.GetDetailColumns(this.Model.ModuleCode); + searchEdit.View.OptionsView.ShowIndicator = false; + searchEdit.View.OptionsView.ColumnAutoWidth = false; + //searchEdit.PopupSizeable = true; + //searchEdit.PopupResizeMode = ResizeMode.Default; + searchEdit.ImmediatePopup = true; + searchEdit.ShowFooter = false; + searchEdit.NullText = ""; + searchEdit.ValueMember = "dm"; + searchEdit.DisplayMember = "mc"; + searchEdit.View.Columns.AddVisible("dm", "dm").Width = 150; + searchEdit.View.Columns.AddVisible("mc", "mc").Width = 200; + searchEdit.View.OptionsView.ShowColumnHeaders = false; + this.gcMain.GridControl.RepositoryItems.Add(searchEdit); + clientFieldNameColumn.ColumnEdit = searchEdit; + searchEdit.DataSource = GetSearchSourceTable(gridColumnsTab); + searchEdit.View.Tag = searchEdit; + } + /// + /// 初始化多选控件 + /// + private void InitMulitControl() + { + if (!ERPInfo.Instance.UserName.Equals("管理员")) + { + pl_purview.Visible = false; + return; + } + purview_Mulit.LabelText = ""; + purview_Mulit.ValueMember = "UserId"; + purview_Mulit.TextField = "UserName"; + purview_Mulit.ValueField = "UserId"; + purview_Mulit.Model = new ControlModel() + { + FieldType = ControlType.LabMultiSelectValue, + }; + string fields = string.Empty; + if (BaseImpl.HasExistsColumn("P_EmployeeTab", "SignBmp")) + fields = ",SignBmp"; + if (BaseImpl.HasExistsColumn("P_EmployeeTab", "Password")) + fields += ",Password"; + if (BaseImpl.HasExistsColumn("P_EmployeeTab", "AD_Id")) + fields += ",AD_Id"; + string sqlValue = string.Format("select EmployeeId UserId,LoginAccount UserCode,EmployeeName UserName {0} from P_EmployeeTab WHERE sign=0 and UseFlag=1 order by loginaccount", fields); + DataTable dataSource = SqlHelper.ExecuteDataTable(sqlValue); + purview_Mulit.SourceSQL = sqlValue; + purview_Mulit.SetDataSource(dataSource); + purview_Mulit.TextEdit.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; + } + /// + /// 初始化数据 + /// + private void InitDataSource() + { + if (BaseImpl.HasExistsTable("P_SpecialImportTab")) + { + if (!BaseImpl.HasExistsColumn("P_SpecialImportTab", "moduleId")) + { + string addColumnSql = "alter table P_SpecialImportTab add moduleId int"; + SqlHelper.ExecuteNonQuery(addColumnSql); + } + if (!BaseImpl.HasExistsColumn("P_SpecialImportTab", "rightMenuName")) + { + string addColumnSql = "alter table P_SpecialImportTab add rightMenuName varchar(100)"; + SqlHelper.ExecuteNonQuery(addColumnSql); + } + if (!BaseImpl.HasExistsColumn("P_SpecialImportTab", "Ls_CondFilter")) + { + string addColumnSql = "alter table P_SpecialImportTab add Ls_CondFilter varchar(1000)"; + SqlHelper.ExecuteNonQuery(addColumnSql); + } + if (!BaseImpl.HasExistsColumn("P_SpecialImportTab", "Ls_UnionColumn")) + { + string addColumnSql = "alter table P_SpecialImportTab add Ls_UnionColumn varchar(2000)"; + SqlHelper.ExecuteNonQuery(addColumnSql); + } + if (!BaseImpl.HasExistsColumn("P_SpecialImportTab", "Ls_CondPurview")) + { + string addColumnSql = "alter table P_SpecialImportTab add Ls_CondPurview varchar(1000)"; + SqlHelper.ExecuteNonQuery(addColumnSql); + } + DataTable dataTable = new DataTable(); + try + { + string menuName = Model.ModuleId + ""; + //if (Model.BillDetailSql.StartsWith("*")) + //{ + // string rightid = Model.BillDetailSql.TrimStart('*'); + // string sqlValue = "select AllowNullExec,* from p_systempopupmenu "; + // sqlValue = $"{sqlValue} where id = '{rightid}'"; + // DataRow rowItem = BaseImpl.GetDataRowResult(sqlValue); + // if (rowItem != null) + // { + // menuName = rowItem["menuname"] + ""; + // } + //} + string searchSql = string.Format("select * from P_SpecialImportTab where moduleId = '{0}' and rightMenuName = '{1}'", Model.ModuleCode, menuName); + dataTable = SqlHelper.ExecuteDataTable(searchSql); + } + catch (Exception) + { + } + if (dataTable != null && dataTable.Rows.Count > 0) + { + DataRow dataRow = dataTable.Rows[0]; + string condFilter = dataRow["Ls_CondFilter"] + ""; + string unionColumn = dataRow["Ls_UnionColumn"] + ""; + string condPurview = dataRow["Ls_CondPurview"] + ""; + + string[] values = condPurview.Trim(',').Split(','); + if (!values.Contains(ERPInfo.Instance.UserId)) + { + condTxtEdit.ReadOnly = true; + } + this.condTxtEdit.Text = condFilter; + this.purview_Mulit.EditText = condPurview; + List unionColumnList = unionColumn.Split(',').ToList(); + DataTable sourceTable = GetSourceTable(unionColumnList); + this.gcMain.GridControl.DataSource = sourceTable; + } + else + { + if (!ERPInfo.Instance.UserName.Equals("管理员")) + { + MessageUtil.Show("未获取到配置数据\r\n请联系管理员配置数据"); + this.Close(); + } + } + } + else + { + string createTableSql = "create table P_SpecialImportTab (moduleId int,rightMenuName varchar(100),Ls_CondFilter varchar(1000),Ls_UnionColumn varchar(2000),Ls_CondPurview varchar(1000))"; + SqlHelper.ExecuteNonQuery(createTableSql); + } + } + /// + /// 判断标题行 + /// + /// + /// + /// + /// + public bool IsTitleRow(string fileName, string sheetName = "", int firstRowIndex = 0) + { + bool isTitle = false; + DataTable data = new DataTable(); + FileStream fs; + IWorkbook workbook = null; + try + { + fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); + if (fileName.IndexOf(".xlsx") > 0) // 2007版本 + { + workbook = new XSSFWorkbook(fs); + } + else if (fileName.IndexOf(".xls") > 0) // 2003版本 + { + workbook = new HSSFWorkbook(fs); + } + ISheet sheet; + if (!string.IsNullOrEmpty(sheetName)) + { + sheet = workbook.GetSheet(sheetName);//根据给定的sheet名称获取数据 + } + else + { + //也可以根据sheet编号来获取数据 + sheet = workbook.GetSheetAt(0);//获取第几个sheet表(此处表示如果没有给定sheet名称,默认是第一个sheet表) + } + if (sheet != null) + { + IRow firstRow = sheet.GetRow(firstRowIndex); + } + } + catch (Exception) + { + } + return isTitle; + } + /// + /// 获取表格数据 + /// + /// + /// + /// + /// + public DataTable ExcelToDatatable(string fileName, DynamicBomImportNew Model, string sheetName = "", int firstRowIndex = 0) + { + DataTable data = new DataTable(); + FileStream fs; + IWorkbook workbook = null; + try + { + fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); + if (fileName.IndexOf(".xlsx") > 0) // 2007版本 + { + workbook = new XSSFWorkbook(fs); + } + else if (fileName.IndexOf(".xls") > 0) // 2003版本 + { + workbook = new HSSFWorkbook(fs); + } + ISheet sheet; + if (!string.IsNullOrEmpty(sheetName)) + { + sheet = workbook.GetSheet(sheetName);//根据给定的sheet名称获取数据 + } + else + { + //也可以根据sheet编号来获取数据 + sheet = workbook.GetSheetAt(0);//获取第几个sheet表(此处表示如果没有给定sheet名称,默认是第一个sheet表) + } + if (sheet != null) + { + int startRow = firstRowIndex + 1; + IRow firstRow = sheet.GetRow(firstRowIndex); + IRow bandRow = null; + int cellCount = firstRow.LastCellNum; + for (int i = firstRow.FirstCellNum; i < firstRow.LastCellNum; i++)//第一行列数循环 + { + ICell titleCell = firstRow.GetCell(i); + ICell bandCell = null; + bool isBandTitle = false; + if (titleCell.IsMergedCell) + { + CellRangeAddress mergrRange = FindMergedRegion(sheet, firstRowIndex, i); + startRow = mergrRange.LastRow + 1; + if (mergrRange != null) + { + if (mergrRange.FirstColumn < mergrRange.LastColumn && !Model.CustomerServiceApp) + { + isBandTitle = true; + bandRow = sheet.GetRow(mergrRange.LastRow + 1); + titleCell = firstRow.GetCell(mergrRange.FirstColumn); + bandCell = bandRow.GetCell(i); + CellRangeAddress bandMergrRange = FindMergedRegion(sheet, mergrRange.LastRow + 1, i); + if (bandMergrRange != null) + { + startRow = bandMergrRange.LastRow + 1; + } + else + { + startRow = mergrRange.LastRow + 2; + } + } + else + { + startRow = mergrRange.LastRow + 1; + } + } + } + string fieldName = ""; + if (!isBandTitle || bandRow == null) + { + fieldName = GetCellValue(titleCell); + } + else + { + fieldName = $"{GetCellValue(titleCell)}|{GetCellValue(bandCell)}"; + } + if (string.IsNullOrEmpty(fieldName) && titleCell.IsMergedCell) + { + cellCount -= 1; + continue; + } + DataColumn column = new DataColumn(fieldName);//获取标题 + data.Columns.Add(column);//添加列 + } + //最后一行的标号 + int rowCount = sheet.LastRowNum; + for (int i = startRow; i <= rowCount; i++)//循环遍历所有行 + { + IRow row = sheet.GetRow(i);//第几行 + if (row == null) + { + continue; //没有数据的行默认是null; + } + //将excel表每一行的数据添加到datatable的行中 + DataRow dataRow = data.NewRow(); + int dataRowIndex = 0; + for (int j = firstRow.FirstCellNum; j < cellCount; j++) + { + ICell cell = row.GetCell(j); + if (cell != null && cell.IsMergedCell) + { + CellRangeAddress mergrRange = FindMergedRegion(sheet, i, j); + if (j == mergrRange.FirstColumn) + { + dataRow[dataRowIndex] = GetCellValue(row.GetCell(j)); + dataRowIndex += 1; + } + else + { + continue; + } + } + else + { + if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null + { + dataRow[dataRowIndex] = GetCellValue(row.GetCell(j)); + dataRowIndex += 1; + } + } + } + data.Rows.Add(dataRow); + } + } + return data; + } + catch (IOException ex) + { + throw new IOException(string.Format("读取模板内容失败,原因:{0}", ex.Message)); + } + catch (Exception ex) + { + throw new Exception(string.Format("读取模板内容失败,原因:{0}", ex.Message)); + } + } + /// + /// 获取特殊单元格的值 + /// + /// + public string GetSpecialCellValue(string fileName, string sheetName = "", int rowIndex = 0, int colIndex = 0) + { + string value = ""; + FileStream fs; + IWorkbook workbook = null; + try + { + fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); + if (fileName.IndexOf(".xlsx") > 0) // 2007版本 + { + workbook = new XSSFWorkbook(fs); + } + else if (fileName.IndexOf(".xls") > 0) // 2003版本 + { + workbook = new HSSFWorkbook(fs); + } + ISheet sheet; + if (!string.IsNullOrEmpty(sheetName)) + { + sheet = workbook.GetSheet(sheetName);//根据给定的sheet名称获取数据 + } + else + { + //也可以根据sheet编号来获取数据 + sheet = workbook.GetSheetAt(0);//获取第几个sheet表(此处表示如果没有给定sheet名称,默认是第一个sheet表) + } + if (sheet != null) + { + IRow firstRow = sheet.GetRow(rowIndex); + value = GetCellValue(firstRow.GetCell(colIndex)); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + return value; + } + /// + /// 获取数据源 + /// + /// + private DataTable GetSourceTable(DataTable dataTable) + { + DataTable sourceTable = new DataTable(); + sourceTable.Columns.Add("excelFieldName"); + sourceTable.Columns.Add("clientFieldName"); + if (dataTable != null) + { + foreach (DataColumn col in dataTable.Columns) + { + DataRow dataRow = sourceTable.NewRow(); + dataRow["excelFieldName"] = col.ColumnName; + sourceTable.Rows.Add(dataRow); + } + } + return sourceTable; + } + /// + /// 获取数据源 + /// + /// + private DataTable GetSourceTable(List unionColumnList) + { + DataTable sourceTable = new DataTable(); + sourceTable.Columns.Add("excelFieldName"); + sourceTable.Columns.Add("clientFieldName"); + if (unionColumnList != null) + { + foreach (string unionColumn in unionColumnList) + { + string[] unionCilumnArray = unionColumn.Split('^'); + if (unionCilumnArray.Length == 2) + { + DataRow dataRow = sourceTable.NewRow(); + dataRow["excelFieldName"] = unionCilumnArray[0]; + dataRow["clientFieldName"] = unionCilumnArray[1]; + sourceTable.Rows.Add(dataRow); + } + } + } + return sourceTable; + } + /// + /// 获取搜索数据源 + /// + /// + private DataTable GetSearchSourceTable(DataTable dataTable) + { + DataTable sourceTable = new DataTable(); + sourceTable.Columns.Add("dm"); + sourceTable.Columns.Add("mc"); + if (dataTable != null && dataTable.Rows.Count > 0) + { + foreach (DataRow row in dataTable.Rows) + { + GridColumnModel model = new GridColumnModel(row); + if (model.Visible) + { + DataRow dataRow = sourceTable.NewRow(); + dataRow["dm"] = row["fieldname"]; + string username = row["username"] + ""; + if (string.IsNullOrEmpty(username)) + { + username = row["fieldname"] + ""; + } + dataRow["mc"] = username; + sourceTable.Rows.Add(dataRow); + } + } + } + return sourceTable; + } + /// + /// 获取关联列数据 + /// + /// + private string GetUnionColumn() + { + string unionColumn = ""; + DataTable sourceTable = this.gcMain.GridControl.DataSourceTable(); + if (sourceTable != null) + { + foreach (DataRow row in sourceTable.Rows) + { + unionColumn += string.Format("{0}^{1},", row["excelFieldName"], row["clientFieldName"]); + } + } + return unionColumn.TrimEnd(','); + } + /// + /// 导入到表格中 + /// + /// + /// + /// + /// + /// + public DataTable ToExcelDataTable(string fileName, out int count, out int errorCount, bool isDirectImport = false, bool isBillImport = false) + { + count = 0; + errorCount = 0; + GridView gridView = ParentView; + DataTable columnsTable = gcMain.gridControl.DataSourceTable(); + DataTable table = gridView.GridControl.DataSourceTable(); + DataTable sourceDataTable = ExcelToDatatable(fileName, Model, Model.SheetName, FirstRowIndex); + DataView filterDataView = new DataView(sourceDataTable); + try + { + if (!string.IsNullOrEmpty(Model.ReadTableCond)) + { + filterDataView.RowFilter = Model.ReadTableCond; + } + } + catch (Exception) + { + } + List dataRows = columnsTable.Rows.Cast().Where(n => !string.IsNullOrEmpty(n["excelFieldName"] + "") && !string.IsNullOrEmpty(n["clientFieldName"] + "")).ToList(); + int index = gridView is BandedGridView ? FirstRowIndex + 1 : FirstRowIndex; + isBillImport = index == FirstRowIndex ? true : isBillImport; + string fileExt = Path.GetExtension(fileName).ToLower(); + + int CurrentRow = 0;//当前行数 + int CurrentColumn = 0;//当前列数 + string columnName = string.Empty;//当前列名 + bool ToAssignment = false;//是否在给新表赋值 + + try + { + ISheet sheet = ExcelHelper.GetSheet(fileName); + IRow firstRow = sheet.GetRow(index); + IRow bandRow = null; + int startRow = FirstRowIndex + 1; + string bandTitel = string.Empty; + ColumnList.Clear(); + int cellCount = firstRow.LastCellNum; + // 添加列 + for (int i = firstRow.FirstCellNum; i < firstRow.LastCellNum; i++) + { + ICell titleCell = firstRow.GetCell(i); + ICell bandCell = null; + bool isBandTitle = false; + if (titleCell.IsMergedCell) + { + CellRangeAddress mergrRange = FindMergedRegion(sheet, index, i); + startRow = mergrRange.LastRow + 1; + if (mergrRange != null) + { + if (mergrRange.FirstColumn < mergrRange.LastColumn && !Model.CustomerServiceApp) + { + isBandTitle = true; + bandRow = sheet.GetRow(mergrRange.LastRow + 1); + titleCell = firstRow.GetCell(mergrRange.FirstColumn); + bandCell = bandRow.GetCell(i); + CellRangeAddress bandMergrRange = FindMergedRegion(sheet, mergrRange.LastRow + 1, i); + if (bandMergrRange != null) + { + startRow = bandMergrRange.LastRow + 1; + } + else + { + startRow = mergrRange.LastRow + 2; + } + } + else + { + startRow = mergrRange.LastRow + 1; + } + } + } + string headerName = ""; + if (!isBandTitle || bandRow == null) + { + headerName = GetCellValue(titleCell); + } + else if (!string.IsNullOrEmpty(GetCellValue(bandCell))) + { + headerName = $"{GetCellValue(titleCell)}|{GetCellValue(bandCell)}"; + } + if (string.IsNullOrEmpty(headerName)) + { + cellCount -= 1; + continue; + } + DataRow row = columnsTable.Rows.Cast().Where(x => (x["excelFieldName"] + "").Equals(headerName)).FirstOrDefault(); + headerName = row != null ? row["clientFieldName"] + "" : headerName; + if (string.IsNullOrWhiteSpace(headerName)) + { + continue; + } + GridColumn col = gridView.Columns.OfType().FirstOrDefault(x => x.FieldName.Equals(headerName)); + if (col != null) + { + if (!table.Columns.Contains(col.FieldName)) + { + table.Columns.Add(col.FieldName, col.ColumnType); + } + ColumnList.Add(col.Tag as GridColumnModel); + } + else + { + MessageUtil.Show("未找到列->" + headerName + ""); + } + } + InitializeValueGrid(); + bool AutoImportCal = SystemInfo.Instance.AutoImportCal;//是否执行计算公式 + for (int i = startRow; i <= sheet.LastRowNum; i++) + { + ToAssignment = true; + CurrentRow = i; + DataRow rowSource = sourceDataTable.Rows[i - startRow]; + if (!filterDataView.Cast().Any(rowView => rowView.Row == rowSource) || !ValidateCond(condTxtEdit.Text, rowSource)) + { + continue; + } + GridColumn col = new GridColumn(); + IRow row = sheet.GetRow(i); + if (row == null) continue; + bandTitel = string.Empty; + DataRow dataRow = table.NewRow(); + //if (i == sheet.LastRowNum && fileExt == ".xlsx") break; + for (int j = row.FirstCellNum; j < firstRow.LastCellNum; j++) + { + CurrentColumn = j; + ICell cell = row.GetCell(j); + ICell titleCell = firstRow.GetCell(j); + ICell bandCell = null; + bool isBandTitle = false; + if (titleCell.IsMergedCell) + { + CellRangeAddress mergrRange = FindMergedRegion(sheet, index, j); + startRow = mergrRange.LastRow + 1; + if (mergrRange != null) + { + if (mergrRange.FirstColumn < mergrRange.LastColumn && !Model.CustomerServiceApp) + { + isBandTitle = true; + bandRow = sheet.GetRow(mergrRange.LastRow + 1); + titleCell = firstRow.GetCell(mergrRange.FirstColumn); + bandCell = bandRow.GetCell(j); + CellRangeAddress bandMergrRange = FindMergedRegion(sheet, mergrRange.LastRow + 1, j); + if (bandMergrRange != null) + { + startRow = bandMergrRange.LastRow + 1; + } + else + { + startRow = mergrRange.LastRow + 2; + } + } + else + { + startRow = mergrRange.LastRow + 1; + } + } + } + if (!isBandTitle || bandRow == null) + { + columnName = GetCellValue(titleCell); + } + else if (!string.IsNullOrEmpty(GetCellValue(bandCell))) + { + columnName = $"{GetCellValue(titleCell)}|{GetCellValue(bandCell)}"; + } + if (string.IsNullOrEmpty(columnName)) + { + continue; + } + DataRow colDataRow = dataRows.Where(n => (n["excelFieldName"] + "").Equals(columnName)).FirstOrDefault(); + if (colDataRow == null) + { + continue; + } + columnName = colDataRow["clientFieldName"] + ""; + //if (!bandTitel.Equals(Bandcell + "") && !string.IsNullOrEmpty(Bandcell + "")) bandTitel = Bandcell + ""; + col = gridView.Columns.OfType().FirstOrDefault(x => x.FieldName.Equals(columnName)); + if (col == null) continue; + GridColumnModel model = col.Tag as GridColumnModel; + if (cell != null) + { + try + { + if (cell.CellType == CellType.Blank) + { + continue; + } + if (cell.CellType == CellType.Numeric && (cell + "").StartsWith("-")) + { + dataRow[col.FieldName] = cell.NumericCellValue; + if (AutoImportCal) + { + if (!string.IsNullOrEmpty(model.UnionFields)) + { + SetUnionValue(model, dataRow[col.FieldName] + "", dataRow); + } + SetCalcValue(model, dataRow[col.FieldName] + "", dataRow); + } + } + else + { + if (cell.CellType == CellType.Numeric) + { + + //GridColumnModel model = col.Tag as GridColumnModel; + if (model != null && isDirectImport && (model.FieldType == ControlType.LabDate || + model.FieldType == ControlType.LabDateTime || + model.FieldType == ControlType.LabDateTimeShort || + model.FieldType == ControlType.LabTime || + model.FieldType == ControlType.LabShortTime)) + { + string fieldValue = ToDateTimeValue(cell.NumericCellValue + ""); + if (fieldValue != "") + { + dataRow[col.FieldName] = Convert.ToDateTime(fieldValue); + if (AutoImportCal) + { + if (!string.IsNullOrEmpty(model.UnionFields)) + { + SetUnionValue(model, dataRow[col.FieldName] + "", dataRow); + } + SetCalcValue(model, dataRow[col.FieldName] + "", dataRow); + } + } + } + else + { + dataRow[col.FieldName] = cell.NumericCellValue; + if (AutoImportCal) + { + if (!string.IsNullOrEmpty(model.UnionFields)) + { + SetUnionValue(model, dataRow[col.FieldName] + "", dataRow); + } + SetCalcValue(model, dataRow[col.FieldName] + "", dataRow); + } + } + } + else + { + //GridColumnModel model = col.Tag as GridColumnModel; + if (model != null && isDirectImport && (model.FieldType == ControlType.LabTreeType || + model.FieldType == ControlType.LabComboxValue || + model.FieldType == ControlType.LabComboxValueParam || + model.FieldType == ControlType.LabAutoCompleteValue || + model.FieldType == ControlType.LabAutoCompleteValueParam || + model.FieldType == ControlType.LabMultiSelectValue || + model.FieldType == ControlType.LabMultiSelectValueParam + || model.FieldType == ControlType.LabTreeLookValue + )) + { + bool isEmpty = model.CanNull; + string fieldValue = GetValueByImportText(dataRow, col.FieldName, cell + "", isBillImport); + if ((model.FieldType == ControlType.LabMultiSelectValue || + model.FieldType == ControlType.LabMultiSelectValueParam) && GetCellValue(cell).Contains(",")) + { + string[] cellText = GetCellValue(cell).Split(','); + foreach (string cellValue in cellText) + { + fieldValue += GetValueByImportText(dataRow, col.FieldName, cellValue, isBillImport) + ','; + } + fieldValue = fieldValue.TrimEnd(','); + } + if (string.IsNullOrEmpty(fieldValue)) + { + if (isEmpty) + { + MessageUtil.Show("该列不允许为空->" + col.Caption + ""); + } + else + { + GridColumn column = gridView.Columns[col.FieldName]; + if (column.ColumnType.Name.ToLower().IndexOf("int") >= 0) + if (column.ColumnType.Name.ToLower() == "string") + dataRow[col.FieldName] = ""; + if (column.ColumnType.Name.ToLower().IndexOf("char") >= 0) + dataRow[col.FieldName] = ""; + if (column.ColumnType.Name.ToLower().IndexOf("int") >= 0) + dataRow[col.FieldName] = 0; + if (column.ColumnType.Name.ToLower() == "decimal") + dataRow[col.FieldName] = 0; + if (AutoImportCal) + { + if (!string.IsNullOrEmpty(model.UnionFields)) + { + SetUnionValue(model, dataRow[col.FieldName] + "", dataRow); + } + SetCalcValue(model, dataRow[col.FieldName] + "", dataRow); + } + } + } + else + { + dataRow[col.FieldName] = fieldValue; + if (AutoImportCal) + { + if (!string.IsNullOrEmpty(model.UnionFields)) + { + SetUnionValue(model, dataRow[col.FieldName] + "", dataRow); + } + SetCalcValue(model, dataRow[col.FieldName] + "", dataRow); + } + } + } + else + { + IRichTextString richTextString = (IRichTextString)cell.RichStringCellValue; + if (fileExt == ".xlsx") + { + cell.SetCellValue(richTextString); + } + else if (fileExt == ".xls") + { + string cellValue = string.Empty; + for (int m = 0; m < richTextString.Length; m++) + { + + //string aaa = richTextString.String.Substring(m , 1); + //short aaa = richTextString.GetFontAtIndex(m); + IFont font = sheet.Workbook.GetFontAt(richTextString.GetFontAtIndex(m));//richTextString.GetFontAtIndex(m) + + string str = string.Empty; + string code = richTextString.ToString().Substring(m, 1); + switch (font.TypeOffset) + { + case FontSuperScript.Sub: + str = ChemistryHelper.GetSubChar(code); + break; + + case FontSuperScript.Super: + str = ChemistryHelper.GetSuperChar(code); + break; + default: + str = code; + break; + } + cellValue = cellValue + str; + } + cell.SetCellValue(cellValue); + } + dataRow[col.FieldName] = GetCellValue(cell); + if (AutoImportCal) + { + if (!string.IsNullOrEmpty(model.UnionFields)) + { + SetUnionValue(model, dataRow[col.FieldName] + "", dataRow); + } + SetCalcValue(model, dataRow[col.FieldName] + "", dataRow); + } + } + } + } + } + catch (Exception) + { + throw; + } + } + } + table.Rows.Add(dataRow); + count += 1; + } + ToAssignment = false; + } + catch (InvalidOperationException ex) + { + + if (ToAssignment && (CurrentRow != 0 || CurrentColumn != 0)) + { + string value = string.Format("第{0}行,第{1}列 {2},值出现异常", CurrentRow, CurrentColumn + 1, columnName); + MessageUtil.Show(value); + } + else + { + MessageUtil.Show(ResourceKeys.DeleteLastTotalRow); + } + } + catch (IOException exe) + { + //string Message = ErrorMessage.PromptErrorMessage(exe); + //MessageUtil.Show(Message, exe.Message); + MessageUtil.Show(string.Format(ResourceKeys.UseingFile, Path.GetFileName(fileName))); + } + catch (Exception ex) + { + //MessageUtil.Show(ResourceKeys.ImportFault + ex.Message); + LogUtil.WriteError("读取excel出错!", ex); + string Message = ErrorMessage.PromptErrorMessage(ex); + MessageUtil.Show(Message, ex.Message); + } + return table.TrimEmptyRows(); + } + /// + /// 导入表的时候将下拉框的值存储 + /// + /// + private void InitializeValueGrid() + { + GridView gridView = ParentView; + ValueGridColumnTable = new Dictionary(); + _checkColumns = new List(); + LookupParentKey = new Dictionary(); + foreach (GridColumn col in gridView.Columns) + { + if (col.Tag is GridColumnModel) + { + GridColumnModel model = col.Tag as GridColumnModel; + if (model != null && !ValueGridColumnTable.ContainsKey(model)) + { + if (model.FieldType == ControlType.LabTreeType || + model.FieldType == ControlType.LabComboxValue || + model.FieldType == ControlType.LabComboxValueParam || + model.FieldType == ControlType.LabAutoCompleteValue || + model.FieldType == ControlType.LabAutoCompleteValueParam || + model.FieldType == ControlType.LabMultiSelectValue || + model.FieldType == ControlType.LabMultiSelectValueParam + || model.FieldType == ControlType.LabTreeLookValue + ) + { + string sqlValue = model.SqlSource; + if (sqlValue.Contains(" #")) + { + //sqlValue = sqlValue.Replace("#", ""); + Match m = Regex.Match(sqlValue, @"#([\s\S]*?)#"); + //处理带参数上一级编码过滤问题,需在带参数sql中增加名称的父级字段 + if (m.Success) + { + sqlValue = ReplaceHelper.ReplaceParam(sqlValue); + LookupParentKey.Add(model.FieldName, m.Value.Replace("#", "")); + } + } + ValueGridColumnTable.Add(model, BaseImpl.GetDataTableResult(sqlValue)); + + if (model.FieldType == ControlType.LabTreeType) + { + _treeColumnName = model.FieldName; + } + } + if (model.FieldType == ControlType.LabCheckBox) + { + _checkColumns.Add(col.FieldName.ToLower()); + } + } + } + } + } + /// + /// 计算列关联字段 + /// + /// + /// + /// + private void SetUnionValue(GridColumnModel model, string fieldValue, DataRow rowItem) + { + //DataTable table = gcMain.gridControl.DataSourceTable(); + //DataRow rowItem = this.gridView.GetFocusedDataRow(); + string unionValues = model.UnionValues; + if (rowItem != null && model != null) + { + // if (this.ControlObj != null) + // unionValues = this.ControlObj.ReplaceParentControlValue(unionValues); + unionValues = ReplaceHelper.ReplaceRowParam(rowItem, unionValues.Replace("{" + model.FieldName + "}", fieldValue)); + try + { + string[] fields = model.UnionFields.Trim(',').Split(','); + DataRow rowResult = BaseImpl.GetDataRowResult(unionValues); + if (rowResult != null) + { + for (int i = 0; i < fields.Length; i++) + { + string field = fields[i]; + string value = rowResult.Table.Columns.Contains(field) ? rowResult[field] + "" : null; + rowItem[field] = value; + } + } + else + { + // 设置为空 + for (int i = 0; i < fields.Length; i++) + { + string field = fields[i]; + rowItem[field] = DBNull.Value; + } + } + } + catch (Exception ex) + { + LogHelper.Instance.WriteError(ex); + LogUtil.WriteError("计算列关联字段--错误-->" + unionValues, ex); + } + } + } + /// + /// 计算列计算公式 + /// + /// + /// + /// + private void SetCalcValue(GridColumnModel model, string fieldValue, DataRow rowItem) + { + try + { + if (rowItem != null && model != null) + { + foreach (GridColumn col in this.ParentView.Columns) + { + GridColumnModel colModel = col.Tag as GridColumnModel; + if (colModel == null) continue; + string defultValue = colModel.DefaultValue; + if (colModel.FieldType == 7 && rowItem.Table.Columns.Contains(col.FieldName) && string.IsNullOrEmpty(rowItem[col.FieldName] + "") && !string.IsNullOrEmpty(colModel.DefaultValue)) + { + defultValue = ReplaceHelper.ReplaceUserInfo(colModel.DefaultValue); + if (defultValue.StartsWith("@")) + { + defultValue = BaseImpl.GetDefaultValue(ReplaceHelper.ReplaceRowParam(rowItem, defultValue)); + } + + if (IsNumberic(defultValue)) rowItem[col.FieldName] = defultValue;//colModel.DefaultValue; + + } + } + List calcModels = ColumnList.FindAll(x => !string.IsNullOrEmpty(x.CalcExpr)).OrderBy(y => y.CalcOrder).ToList(); + foreach (GridColumnModel gridModel in calcModels) + { + // 计算顺序小于当前控件则不计算 + if (gridModel.CalcOrder < model.CalcOrder) continue; + + if (!gridModel.FieldName.Equals(model.FieldName, StringComparison.OrdinalIgnoreCase)) + { + bool isTruncate = false; + string calcExpr = gridModel.CalcExpr; + if (calcExpr.StartsWith("@truncate:")) + { + calcExpr = calcExpr.Substring(10); + isTruncate = true; + } + + try + { + string result = string.Empty; + if (calcExpr.StartsWith("@")) + { + result = BaseImpl.GetDefaultValue(ReplaceHelper.ReplaceRowParam(rowItem, calcExpr)); + } + else + { + calcExpr = ReplaceHelper.ReplaceRowParam(rowItem, calcExpr); + result = EvalHelper.Eval2(ReplaceHelper.ReplaceEvalCond(calcExpr)) + ""; + } + if (isTruncate) + { + result += result.Contains(".") ? "0000000000" : ".0000000000"; + rowItem[gridModel.FieldName] = result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), model.Decimals + 1); + //this.gridView.SetRowCellValue(this.gridView.FocusedRowHandle, this.gridView.Columns[gridModel.FieldName], result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), model.Decimals + 1)); + } + else + { + try + { + double d = 0; + if (!string.IsNullOrEmpty(result) && + !"NaN".Equals(result, StringComparison.OrdinalIgnoreCase) && + !"非数字".Equals(result, StringComparison.OrdinalIgnoreCase) && + !"undefined".Equals(result, StringComparison.OrdinalIgnoreCase) && + result != "∞" && result != "-∞" && + !"正无穷大".Equals(result, StringComparison.OrdinalIgnoreCase) && + !"负无穷大".Equals(result, StringComparison.OrdinalIgnoreCase) && + double.TryParse(result, out d)) + { + if (string.IsNullOrEmpty(gridModel.DataFormat)) + { + result = Math.Round(Convert.ToDouble(d), model.Decimals, MidpointRounding.AwayFromZero) + ""; + } + else + { + //计算后先执行保存小数位数 + if (SystemInfo.Instance.ComputeFormatting) result = string.Format("{0:" + gridModel.DataFormat + "}", Convert.ToDecimal(result)); + } + if (model.FieldType == 7 && result.Contains('%')) + { + result = (double.Parse(result.Replace("%", "")) * 0.01).ToString(); + } + rowItem[gridModel.FieldName] = result; + // 判断计算列有无关联值 + GridColumnModel UnionModel = calcModels.FirstOrDefault(x => x.FieldName == gridModel.FieldName); + if (!string.IsNullOrEmpty(UnionModel.UnionFields)) + { + this.SetUnionValue(UnionModel, rowItem[gridModel.FieldName] + "", rowItem); + } + //this.gridView.SetRowCellValue(this.gridView.FocusedRowHandle, this.gridView.Columns[gridModel.FieldName], result); + } + } + catch (Exception) + { + + } + } + } + catch (Exception ex) + { + LogHelper.Instance.WriteError(ex); + LogUtil.WriteError("计算列计算公式--错误-->" + rowItem[gridModel.FieldName], ex); + } + } + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + /// + /// 判断输入的字符串是否可以转换成数值类型 + /// + /// + /// + public static bool IsNumberic(string str) + { + double vsNum; + bool isNum; + isNum = double.TryParse(str, System.Globalization.NumberStyles.Float, + System.Globalization.NumberFormatInfo.InvariantInfo, out vsNum); + return isNum; + } + /// + /// 获取导入到下拉框里的显示值 + /// + /// + /// + /// + /// + /// + public static string GetValueByImportText(DataRow row, string fieldName, string text, bool isBillImport = false) + { + string value = text; + foreach (GridColumnModel model in ValueGridColumnTable.Keys) + { + if (model.FieldName.Equals(fieldName, StringComparison.OrdinalIgnoreCase)) + { + string selWhere = "1=1"; + DataTable table = ValueGridColumnTable[model]; + if (table != null && table.Rows.Count > 0) + { + DataRow rowItemValue = table.Rows.Cast().FirstOrDefault(x => x[model.TextMember] + "" == text); + DataRow rowItemText = table.Rows.Cast().FirstOrDefault(x => x[model.ValueMember] + "" == text); + value = rowItemValue != null ? rowItemValue[isBillImport ? model.ValueMember : model.TextMember] + "" : rowItemText != null ? rowItemText[isBillImport ? model.ValueMember : model.TextMember] + "" : ""; + } + else + value = ""; + } + } + return value; + } + /// + /// 数字转换时间格式 + /// + /// + /// 日期/时间格式 + private static string ToDateTimeValue(string strNumber) + { + string returnData = ""; + if (!string.IsNullOrWhiteSpace(strNumber)) + { + if (!string.IsNullOrWhiteSpace(strNumber)) + { + DateTime dateTime = DateTime.FromOADate(Convert.ToDouble(strNumber)); + returnData = dateTime.ToString("yyyy-MM-dd HH:mm:ss"); + } + } + return returnData; + } + /// + /// 解析code信息 + /// + /// + /// + /// + /// + /// + private void GetFileCodeInfo(string sourceCode, out string code, out string name, out string bb, out int bc) + { + string namepattern = @"^(.*-S[A-Z]\d*)(.*)$"; + string pattern = @"^(.*?)(\d+)?$"; + string childcode = ""; + string childname = ""; + string childsourceCode = ""; + string childsourceBB = ""; + int childsourceBC = 0; + Match namematch = Regex.Match(Path.GetFileNameWithoutExtension(sourceCode).Trim(), namepattern); + if (namematch.Success) + { + childcode = namematch.Groups[1].Value.Trim(); + childname = namematch.Groups[2].Value.Trim(); + } + Match match = Regex.Match(childcode, pattern); + if (match.Success) + { + childsourceCode = match.Groups[1].Value; + int.TryParse(match.Groups[2].Value, out childsourceBC);//版次 + Match bbMatch = Regex.Match(childsourceCode, @"^.*?([A-Za-z]+)(\d*)$"); + if (bbMatch.Success) + { + childsourceBB = bbMatch.Groups[1].Value.Trim(); + } + } + code = childsourceCode; + name = childname; + bb = childsourceBB; + bc = childsourceBC; + } + /// + /// 说明:检查可用条件 + /// 创建日期:2024-3-19 + /// 修改人: + /// 修改日期: + /// 修改备注: + /// 版本:1.0 + /// + /// The cond. + /// The data row. + /// true if XXXX, false otherwise. + public bool ValidateCond(string cond, DataRow dataRow) + { + bool result = false; + try + { + cond = ReplaceHelper.ReplaceRowParam(dataRow, cond); + if (cond.StartsWith("@") || cond.StartsWith("!")) + { + result = "1".Equals(BaseImpl.GetDefaultValue(cond)); + } + else if (dataRow == null) + { + result = ReplaceHelper.EvalCond(cond); + } + else + { + result = ReplaceHelper.ReplaceRowParamCond(dataRow, cond); + } + } + catch (Exception) + { + } + return result; + } + /// + /// 获取合并区域 + /// + /// + /// + /// + /// + private CellRangeAddress FindMergedRegion(ISheet sheet, int rowIndex, int columnIndex) + { + int mergedRegionsCount = sheet.NumMergedRegions; + + for (int i = 0; i < mergedRegionsCount; i++) + { + CellRangeAddress mergedRegion = sheet.GetMergedRegion(i); + if (mergedRegion.IsInRange(rowIndex, columnIndex)) + { + return mergedRegion; // 返回合并区域 + } + } + return null; // 未找到合并区域 + } + /// + /// 获取单元格值 + /// + /// + /// + public static string GetCellValue(ICell cell) + { + string cellValue = ""; + try + { + if (cell != null) + { + // 根据单元格类型获取值 + switch (cell.CellType) + { + case CellType.String: + cellValue = cell.StringCellValue; + break; + case CellType.Numeric: + cellValue = cell.NumericCellValue.ToString(); + break; + case CellType.Boolean: + cellValue = cell.BooleanCellValue.ToString(); + break; + case CellType.Formula://单元格中带有公式,根据类型继续判断 + switch (cell.CachedFormulaResultType) + { + case CellType.String: + cellValue = cell.StringCellValue; + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmMain.resx b/插件库/Lskj.PubBomImportNew/FrmMain.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmMain.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmProgress.Designer.cs b/插件库/Lskj.PubBomImportNew/FrmProgress.Designer.cs new file mode 100644 index 0000000..1476b4a --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmProgress.Designer.cs @@ -0,0 +1,143 @@ +namespace Lskj.PubBomImport +{ + partial class FrmProgress + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProgress)); + this.label3 = new System.Windows.Forms.Label(); + this.splitter1 = new System.Windows.Forms.Splitter(); + this.progressBarTotal = new System.Windows.Forms.ProgressBar(); + this.panel2 = new System.Windows.Forms.Panel(); + this.labelCurrentItem = new System.Windows.Forms.Label(); + this.progressBarCurrent = new System.Windows.Forms.ProgressBar(); + this.lblAll = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.splitter2 = new System.Windows.Forms.Splitter(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(11, 8); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(104, 12); + this.label3.TabIndex = 0; + this.label3.Text = "系统正在导入Bom"; + // + // splitter1 + // + this.splitter1.BackColor = System.Drawing.SystemColors.InactiveBorder; + this.splitter1.Dock = System.Windows.Forms.DockStyle.Top; + this.splitter1.Location = new System.Drawing.Point(0, 31); + this.splitter1.Name = "splitter1"; + this.splitter1.Size = new System.Drawing.Size(462, 2); + this.splitter1.TabIndex = 10; + this.splitter1.TabStop = false; + // + // progressBarTotal + // + this.progressBarTotal.Location = new System.Drawing.Point(16, 71); + this.progressBarTotal.Name = "progressBarTotal"; + this.progressBarTotal.Size = new System.Drawing.Size(438, 12); + this.progressBarTotal.Step = 1; + this.progressBarTotal.TabIndex = 4; + // + // panel2 + // + this.panel2.Controls.Add(this.progressBarTotal); + this.panel2.Controls.Add(this.labelCurrentItem); + this.panel2.Controls.Add(this.progressBarCurrent); + this.panel2.Controls.Add(this.lblAll); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.ForeColor = System.Drawing.SystemColors.ControlDark; + this.panel2.Location = new System.Drawing.Point(0, 31); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(462, 101); + this.panel2.TabIndex = 8; + // + // labelCurrentItem + // + this.labelCurrentItem.AutoSize = true; + this.labelCurrentItem.Location = new System.Drawing.Point(14, 16); + this.labelCurrentItem.Name = "labelCurrentItem"; + this.labelCurrentItem.Size = new System.Drawing.Size(65, 12); + this.labelCurrentItem.TabIndex = 0; + this.labelCurrentItem.Text = "正在导入:"; + // + // progressBarCurrent + // + this.progressBarCurrent.Location = new System.Drawing.Point(15, 33); + this.progressBarCurrent.Name = "progressBarCurrent"; + this.progressBarCurrent.Size = new System.Drawing.Size(438, 12); + this.progressBarCurrent.Step = 1; + this.progressBarCurrent.TabIndex = 5; + // + // lblAll + // + this.lblAll.AutoSize = true; + this.lblAll.Location = new System.Drawing.Point(14, 55); + this.lblAll.Name = "lblAll"; + this.lblAll.Size = new System.Drawing.Size(53, 12); + this.lblAll.TabIndex = 2; + this.lblAll.Text = "总进度:"; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.panel1.Controls.Add(this.label3); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(462, 31); + this.panel1.TabIndex = 7; + // + // splitter2 + // + this.splitter2.BackColor = System.Drawing.SystemColors.InactiveBorder; + this.splitter2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.splitter2.Location = new System.Drawing.Point(0, 132); + this.splitter2.Name = "splitter2"; + this.splitter2.Size = new System.Drawing.Size(462, 2); + this.splitter2.TabIndex = 11; + this.splitter2.TabStop = false; + // + // FrmProgress + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(462, 134); + this.Controls.Add(this.splitter1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.splitter2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmProgress.cs b/插件库/Lskj.PubBomImportNew/FrmProgress.cs new file mode 100644 index 0000000..01ce15b --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmProgress.cs @@ -0,0 +1,958 @@ +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 System.IO; +using System.Threading; +using System.Net; +using Lskj.Control; +using System.Threading.Tasks; +using Lskj.Core; +using DevExpress.XtraGrid.Columns; +using NPOI.SS.UserModel; +using NPOI.SS.Util; +using NPOI.XSSF.UserModel; +using NPOI.HSSF.UserModel; +using Lskj.Model; +using Lskj.Control.BrowserSetting; +using Lskj.Business; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using Lskj.Business.Impl; +using System.Text.RegularExpressions; +using Lskj.Util; +using System.Web; +using Lskj.Control.Model; +using System.Data.SqlClient; + +namespace Lskj.PubBomImportNew +{ + + /// + /// 下载进度窗口 + /// + public partial class FrmProgress : Form + { + public FrmMain frmMain; + public DynamicBomImportNew Model; + public System.Windows.Forms.Timer ImportTimer = new System.Windows.Forms.Timer(); + public FrmProgress() + { + InitializeComponent(); + this.ControlBox = false; + } + /// + /// bom结构上传(总部) + /// + /// + public void StartImportInFileByZB(List selectRows) + { + try + { + if (Directory.Exists("BomImportTemp")) + { + Directory.Delete("BomImportTemp", true); + } + Directory.CreateDirectory("BomImportTemp"); + int execOrder = 1; + if (selectRows.Count > 1) + { + throw new Exception($"不允许选择多个文件"); + } + DataRow mxRow = selectRows[0]; + if (mxRow != null) + { + string mxDirPath = mxRow["BomFieldNameDir"] + ""; + string productId = mxRow["BomMxMainProduct"] + ""; + string addState = mxRow["BomMxAddState"] + ""; + if (string.IsNullOrEmpty(Model.MainFieldDic)) + { + throw new Exception($"字段对应关系配置异常"); + } + if (string.IsNullOrEmpty(productId)) + { + throw new Exception($"保存失败\r\n请重新进行BOM上传后保存"); + } + if (addState.Equals("新增")) + { + DataRow billRow = BaseImpl.GetDataRowResult($"select qms_maddf_billdocument_id from qms_BillFileAddMaintab where qms_maddf_productid = '{productId}' and isnull(qms_maddf_addMode,'0') = '0'"); + if (billRow != null) + { + throw new Exception($"物料编码{productId}的BOM新增单已存在审批流\r\n请进行审批"); + } + DataRow billbomRow = BaseImpl.GetDataRowResult($"select top 1 billdocument_id from bom_BillTab where productid='{productId}'"); + if (billRow != null) + { + throw new Exception($"物料编码{productId}的BOM建立单已存在\r\n请进行修改操作"); + } + } + else + { + DataRow billbomRow = BaseImpl.GetDataRowResult($"select top 1 billdocument_id from bom_BillTab where productid='{productId}' and stepover = '1'"); + if (billbomRow != null) + { + throw new Exception($"物料编码{productId}的BOM建立单已终审\r\n禁止修改操作"); + } + } + FileInfo mxInfo = null; + if (!string.IsNullOrEmpty(mxDirPath)) + { + mxInfo = new FileInfo(mxDirPath); + } + if (mxInfo != null) + { + DataTable mxfiletable = BaseImpl.GetDataTableResult($"select sname,fileId,webpath from p_fm_filetab where parentid in (select dirid from P_fm_DirectoryTab where pid = '{productId}' and dllcoid = '1000202') and speciesno = '010106' and sname = '{mxInfo.Name}'"); + if (mxfiletable.Rows.Count > 0) + { + throw new Exception($"该文件已存在,请确认后再创建BOM"); + } + FrmBillInfo frmBillInfo = new FrmBillInfo(); + int.TryParse(Model.FirstRowIndex + "", out int firstRowIndex); + DataTable parentTable = ExcelToDatatable(mxInfo.FullName, Model, Model.SheetName, firstRowIndex); + parentTable = parentTable.Rows.Cast().Where(n => int.TryParse(n["序号"] + "", out _) && !string.IsNullOrEmpty(n["物料编码"] + "")).ToList().CopyToDataTable(); + //StringBuilder stringBuilder = new StringBuilder(); + //foreach (DataRow dataRow in parentTable.Rows) + //{ + // string code = (dataRow["图号"] + "").Trim(); + // if (code.StartsWith("QD")) + // { + // int createCode = ProductSaveUnique(code.Replace("'", "''"), (dataRow["名称"] + "").Replace("'", "''"), (dataRow["备注"] + "").Replace("'", "''"), "1000202_1", out string pid, out string msg); + // if ((createCode + "").Equals("-1")) + // { + // throw new Exception($"虚拟物料创建失败\r\n{msg}"); + // } + // } + //} + //if (!string.IsNullOrEmpty(stringBuilder.ToString())) + //{ + // SqlHelper.ExecuteNonQuery(stringBuilder.ToString()); + //} + frmBillInfo.OnControlSourceBind += (s, args) => + { + Task task = new Task(() => + { + try + { + int.TryParse(Model.FirstRowIndex, out int index); + frmMain.FirstRowIndex = index; + bool isUpload = false; + string msg = ""; + Dictionary maxBcFileDic = new Dictionary(); + Dictionary fileTableDic = new Dictionary(); + #region 新增或修改MX + frmBillInfo.OnBillAdd(); + SetProcessBar(0, 0); + SetProcessMsg($"正在导入:{Path.GetFileName(mxInfo.FullName)}"); + DataTable childTable = frmBillInfo.GcMainView.GridControl.DataSourceTable().Clone(); + var mxCodeRows = parentTable.AsEnumerable(); + string[] fieldDic = Model.MainFieldDic.Split(','); + foreach (DataRow parentRow in parentTable.Rows) + { + string code = (parentRow["物料编码"] + "").Trim(); + int codeCount = mxCodeRows.Where(n => (n["物料编码"] + "").Trim().StartsWith(code)).Count(); + if (codeCount > 1)//只允许存在一个 + { + throw new Exception($"文件中的物料编码{code}重复,请修改"); + } + DataRow childRow = childTable.NewRow(); + foreach (string item in fieldDic) + { + string[] fieldArray = item.Split('^'); + string key0 = fieldArray[0]; + string key1 = fieldArray[1]; + childRow[key0] = parentRow[key1] + ""; + } + //childRow["ProductId"] = parentRow["物料编码"] + ""; + //childRow["appellation"] = parentRow["名称"] + ""; + //childRow["bak"] = parentRow["备注"] + ""; + //childRow["tamount"] = parentRow["数量"] + ""; + //childRow["amount"] = parentRow["数量"] + ""; + childTable.Rows.Add(childRow); + } + SetProcessBar(20, 0); + if (childTable.Rows.Count == 0) + { + throw new Exception($"明细数据不能空"); + } + SetProcessBar(40, 0); + string billMasterSql = $"select (select top 1 billdocument_id from bom_BillTab where productid='{productId}') as billdocument_id,'0' affirmer,'0' rtagid,'{productId}' as productid,'' as bak,'' as bombb,'' as bombc"; + // 处理单据表头数据 + DataRow masterRow = BillImpl.GetDataRowResult(billMasterSql); + SetProcessBar(60, 0); + frmBillInfo.AddOrUpdateBill(masterRow, childTable); + string guid = Guid.NewGuid() + ""; + frmBillInfo.BillSaveSql(guid); + SetProcessBar(80, 0); + //上传文件 + string uploadMxFileId = ""; + if (mxfiletable.Rows.Count == 0) + { + isUpload = UploadFileToAudit(mxInfo.FullName, productId, "010106", out msg, out uploadMxFileId); + if (!isUpload) + { + throw new Exception($"{mxInfo.Name}附件上传失败\r\n{msg}"); + } + } + StaticControl.RightMenuGridView.GridControl.Invoke(new Action(() => + { + if (mxRow.Table.Columns.Contains("qms_laddf_FileId")) + { + int.TryParse(uploadMxFileId, out int qms_laddf_FileId); + mxRow["qms_laddf_FileId"] = qms_laddf_FileId; + } + if (mxRow.Table.Columns.Contains("qms_laddf_Exec")) + { + mxRow["qms_laddf_Exec"] = guid; + } + if (mxRow.Table.Columns.Contains("qms_laddf_ExecOrder")) + { + mxRow["qms_laddf_ExecOrder"] = execOrder; + } + })); + execOrder += 1; + #endregion + SetProcessBar(100, (1 / (parentTable.Rows.Count + 1)) * 100); + SetProcessLabelAllMsg($"总进度:{1}/{parentTable.Rows.Count + 1}"); + this.Invoke(new Action(() => + { + this.DialogResult = DialogResult.OK; + Close(); + ImportTimer?.Dispose(); + })); + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + this.Invoke(new Action(() => + { + this.DialogResult = DialogResult.Cancel; + Close(); + ImportTimer?.Dispose(); + })); + } + }); + task.Start(); + }; + frmBillInfo.OnLoad(Model); + frmMain.ParentView = frmBillInfo.GcMainView; + } + else + { + throw new Exception("文件不存在"); + } + } + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + this.Invoke(new Action(() => + { + this.DialogResult = DialogResult.Cancel; + Close(); + ImportTimer?.Dispose(); + })); + } + } + public int ProductSaveUnique(string spec, string appellation, string bak, string billSeq, out string productId, out string tipMsg) + { + productId = string.Empty; + tipMsg = string.Empty; + try + { + /*---------------------------------------------------- + * 1) 组装存储过程参数 + *--------------------------------------------------*/ + // ProductId OUTPUT + SqlParameter pProductId = new SqlParameter("@ProductId", SqlDbType.VarChar, 100) + { + Direction = ParameterDirection.Output + }; + + // 存储过程 RETURN 值 + SqlParameter pReturn = new SqlParameter("@return", SqlDbType.Int) + { + Direction = ParameterDirection.ReturnValue + }; + + // 中文字段可根据服务器排序规则切换参数类型 + bool useNVar = ERPInfo.Instance.ChangeParameterType; + + SqlParameter[] param = + { + new SqlParameter("@Spec", SqlDbType.VarChar, 50), + useNVar + ? new SqlParameter("@Appellation", SqlDbType.NVarChar, 200) + : new SqlParameter("@Appellation", SqlDbType.VarChar, 200), + useNVar + ? new SqlParameter("@Bak", SqlDbType.NVarChar, 200) + : new SqlParameter("@Bak", SqlDbType.VarChar, 200), + new SqlParameter("@BillSeq", SqlDbType.VarChar, 40), + pProductId, + pReturn + }; + + param[0].Value = spec; + param[1].Value = appellation ?? string.Empty; + param[2].Value = bak ?? string.Empty; + param[3].Value = string.IsNullOrWhiteSpace(billSeq) ? (object)DBNull.Value : billSeq; + + SqlHelper.ExecuteNonQuery( + CommandType.StoredProcedure, + "sp_InsertProductUnique", + param); + + /*---------------------------------------------------- + * 3) 处理返回值与提示信息 + *--------------------------------------------------*/ + productId = pProductId.Value == DBNull.Value ? string.Empty + : pProductId.Value.ToString(); + int retCode = (pReturn.Value == DBNull.Value) ? -1 + : Convert.ToInt32(pReturn.Value); + + // 根据返回值给出业务提示 + switch (retCode) + { + case 0: + tipMsg = "保存成功!"; + break; + case 1: + tipMsg = "规格已存在,直接返回现有编码。"; + break; + default: + tipMsg = "发生异常,请查看日志!"; + break; + } + + return retCode; + } + catch (Exception ex) + { + tipMsg = ex.Message; + throw; // 继续向外抛,让调用层捕获日志 + } + } + + /// + /// 显示当前文件 + /// + /// + private void SetProcessMsg(string text) + { + this.labelCurrentItem.Invoke(new Action(() => + { + this.labelCurrentItem.Text = text; + })); + } + private void SetProcessLabelAllMsg(string text) + { + this.lblAll.Invoke(new Action(() => + { + this.lblAll.Text = text; + })); + } + /// + /// 显示当前进度 + /// + /// + /// + private void SetProcessBar(int current, int total) + { + this.Invoke(new Action(() => + { + this.progressBarCurrent.Value = current; + this.progressBarTotal.Value = total; + })); + } + /// + /// 获取表格数据 + /// + /// + /// + /// + /// + public DataTable ExcelToDatatable(string fileName, DynamicBomImportNew Model, string sheetName = "", int firstRowIndex = 0) + { + DataTable data = new DataTable(); + FileStream fs; + IWorkbook workbook = null; + try + { + fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); + if (fileName.IndexOf(".xlsx") > 0) // 2007版本 + { + workbook = new XSSFWorkbook(fs); + } + else if (fileName.IndexOf(".xls") > 0) // 2003版本 + { + workbook = new HSSFWorkbook(fs); + } + ISheet sheet; + if (!string.IsNullOrEmpty(sheetName)) + { + sheet = workbook.GetSheet(sheetName);//根据给定的sheet名称获取数据 + } + else + { + //也可以根据sheet编号来获取数据 + sheet = workbook.GetSheetAt(0);//获取第几个sheet表(此处表示如果没有给定sheet名称,默认是第一个sheet表) + } + if (sheet != null) + { + int startRow = firstRowIndex + 1; + IRow firstRow = sheet.GetRow(firstRowIndex); + IRow bandRow = null; + int cellCount = firstRow.LastCellNum; + for (int i = firstRow.FirstCellNum; i < firstRow.LastCellNum; i++)//第一行列数循环 + { + ICell titleCell = firstRow.GetCell(i); + ICell bandCell = null; + bool isBandTitle = false; + if (titleCell.IsMergedCell) + { + CellRangeAddress mergrRange = FindMergedRegion(sheet, firstRowIndex, i); + startRow = mergrRange.LastRow + 1; + if (mergrRange != null) + { + if (mergrRange.FirstColumn < mergrRange.LastColumn && !Model.CustomerServiceApp) + { + isBandTitle = true; + bandRow = sheet.GetRow(mergrRange.LastRow + 1); + titleCell = firstRow.GetCell(mergrRange.FirstColumn); + bandCell = bandRow.GetCell(i); + CellRangeAddress bandMergrRange = FindMergedRegion(sheet, mergrRange.LastRow + 1, i); + if (bandMergrRange != null) + { + startRow = bandMergrRange.LastRow + 1; + } + else + { + startRow = mergrRange.LastRow + 2; + } + } + else + { + startRow = mergrRange.LastRow + 1; + } + } + } + string fieldName = ""; + if (!isBandTitle || bandRow == null) + { + fieldName = GetCellValue(titleCell); + } + else + { + fieldName = $"{GetCellValue(titleCell)}|{GetCellValue(bandCell)}"; + } + if (string.IsNullOrEmpty(fieldName) && titleCell.IsMergedCell) + { + cellCount -= 1; + continue; + } + DataColumn column = new DataColumn(fieldName);//获取标题 + data.Columns.Add(column);//添加列 + } + //最后一行的标号 + int rowCount = sheet.LastRowNum; + for (int i = startRow; i <= rowCount; i++)//循环遍历所有行 + { + IRow row = sheet.GetRow(i);//第几行 + if (row == null) + { + continue; //没有数据的行默认是null; + } + //将excel表每一行的数据添加到datatable的行中 + DataRow dataRow = data.NewRow(); + int dataRowIndex = 0; + for (int j = firstRow.FirstCellNum; j < cellCount; j++) + { + ICell cell = row.GetCell(j); + if (cell != null && cell.IsMergedCell) + { + CellRangeAddress mergrRange = FindMergedRegion(sheet, i, j); + if (j == mergrRange.FirstColumn) + { + dataRow[dataRowIndex] = GetCellValue(row.GetCell(j)); + dataRowIndex += 1; + } + else + { + cellCount += 1; + continue; + } + } + else + { + if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null + { + dataRow[dataRowIndex] = GetCellValue(row.GetCell(j)); + dataRowIndex += 1; + } + } + } + data.Rows.Add(dataRow); + } + } + return data; + } + catch (IOException ex) + { + throw new IOException(string.Format("读取模板内容失败,原因:{0}", ex.Message)); + } + catch (Exception ex) + { + throw new Exception(string.Format("读取模板内容失败,原因:{0}", ex.Message)); + } + } + /// + /// 获取单元格值 + /// + /// + /// + public static string GetCellValue(ICell cell) + { + string cellValue = ""; + try + { + if (cell != null) + { + // 根据单元格类型获取值 + switch (cell.CellType) + { + case CellType.String: + cellValue = cell.StringCellValue; + break; + case CellType.Numeric: + cellValue = cell.NumericCellValue.ToString(); + break; + case CellType.Boolean: + cellValue = cell.BooleanCellValue.ToString(); + break; + case CellType.Formula://单元格中带有公式,根据类型继续判断 + switch (cell.CachedFormulaResultType) + { + case CellType.String: + cellValue = cell.StringCellValue; + break; + case CellType.Numeric: + cellValue = cell.NumericCellValue.ToString(); + break; + case CellType.Boolean: + cellValue = cell.BooleanCellValue.ToString(); + break; + case CellType.Blank: + break; + default: + cellValue.ToString(); + break; + } + break; + default: + cellValue = cell.ToString(); + break; + } + } + } + catch (Exception) + { + } + return cellValue; + } + /// + /// 获取合并区域 + /// + /// + /// + /// + /// + private CellRangeAddress FindMergedRegion(ISheet sheet, int rowIndex, int columnIndex) + { + int mergedRegionsCount = sheet.NumMergedRegions; + + for (int i = 0; i < mergedRegionsCount; i++) + { + CellRangeAddress mergedRegion = sheet.GetMergedRegion(i); + if (mergedRegion.IsInRange(rowIndex, columnIndex)) + { + return mergedRegion; // 返回合并区域 + } + } + return null; // 未找到合并区域 + } + /// + /// 上传文件 + /// + /// + /// + /// + private bool UploadFile(string filePath, string idValue, out string msg, out string outFileId) + { + bool isUpload = false; + string File = filePath; + string returnMsg = ""; + string fileId = ""; + string postUrl = ""; + try + { + //获取文件信息 + FileInfo fileInfo = new FileInfo(File); + string suffix = Path.GetExtension(File); + string name = fileInfo.Name; + DateTime creationTime = fileInfo.CreationTime; + byte[] fileBytes = ConvertFileToBytes(File); + string fileStream = Convert.ToBase64String(fileBytes); + string userId = ERPInfo.Instance.UserId; + DateTime uploadTime = DateTime.Now; + string speciesno = "010102"; + // 检查扩展名是否为 .xlsx 或 .xls + if (suffix.Equals(".xlsx", StringComparison.OrdinalIgnoreCase) || + suffix.Equals(".xls", StringComparison.OrdinalIgnoreCase)) + { + speciesno = "010101"; + } + //上传文件到服务器目录 + postUrl = "{0}Api/FileUploadApi.ashx?moduleId={1}&idValue={2}&speciesno={8}&folder={3}&totsize={4}&position={5}&filename={6}&method={7}&confirm=1"; + if (!string.IsNullOrEmpty(idValue)) + { + string token = ""; + string loginUrl = $"{SystemInfo.Instance.OAUrl}/Api/SysUserAjaxApi.ashx"; + HttpTools.setting("application/x-www-form-urlencoded", null, null, HttpTools.Encode.UTF8); + Dictionary loginPmsDic = new Dictionary(); + loginPmsDic.Add("method", "Login"); + loginPmsDic.Add("username", HttpUtility.UrlEncode(ERPInfo.Instance.UserName)); + loginPmsDic.Add("password", HttpUtility.UrlEncode(ERPInfo.Instance.InPassWord)); + HttpWebResponse loginResponse = HttpTools.Post(loginUrl, "", loginPmsDic, HttpTools.Method.POST, out CookieCollection loginCookie, out string loginResult); + if (loginResponse != null && !string.IsNullOrEmpty(loginResult)) + { + JObject jObject = JsonConvert.DeserializeObject(loginResult); + if (jObject.ContainsKey("success")) + { + if ((jObject["success"] + "").Equals("True")) + { + if (jObject.ContainsKey("token")) + { + token = jObject["token"] + ""; + } + } + } + } + if (!string.IsNullOrEmpty(token)) + { + //string selectSql = $"select * from P_fm_FileTab where parentid in (select dirid from P_fm_DirectoryTab where pid = '{idValue}' and dllcoid = '1000202') and speciesno = '{speciesno}' and sname = '{name.Replace(" ", "")}'"; + //DataTable deleteTable = BaseImpl.GetDataTableResult(selectSql); + //if (deleteTable != null && deleteTable.Rows.Count > 0) + //{ + // foreach (DataRow deleteRow in deleteTable.Rows) + // { + // string field = HttpUtility.UrlEncode(deleteRow["fileId"] + ""); + // string webpath = HttpUtility.UrlEncode(deleteRow["webpath"] + ""); + // //删除文件 + // string deleteUrl = "{0}Api/FileUploadApi.ashx?fileId={1}&filename={2}&method={3}"; + // deleteUrl = string.Format(deleteUrl, SystemInfo.Instance.OAUrl, field, webpath, "DoDelete"); + // HttpHelper.Setting("application/x-www-form-urlencoded", null, null); + // Dictionary deleteHeaderDic = new Dictionary(); + // deleteHeaderDic.Add("Authorization", $"Bearer {token}"); + // HttpWebResponse deleteWebResponse = HttpHelper.Post(deleteUrl, fileStream, null, deleteHeaderDic, out string deleteResult); + // } + //} + postUrl = string.Format(postUrl, SystemInfo.Instance.OAUrl, "1000202", HttpUtility.UrlEncode(idValue), "file", fileBytes.Length, 0, HttpUtility.UrlEncode(name), "DoWebUpload", speciesno); + HttpTools.setting("application/x-www-form-urlencoded", null, null); + string result = ""; + CookieCollection cookieCollection = null; + Dictionary headerDic = new Dictionary(); + headerDic.Add("Authorization", $"Bearer {token}"); + HttpWebResponse webResponse = HttpTools.Post(postUrl, fileStream, null, headerDic, HttpTools.Method.POST, out cookieCollection, out result); + if (webResponse != null && !string.IsNullOrEmpty(result)) + { + JObject jsonObject = (JObject)JsonConvert.DeserializeObject(result); + string isSuccess = jsonObject["success"] + ""; + if (isSuccess.Equals("True", StringComparison.CurrentCultureIgnoreCase)) + { + if (jsonObject.ContainsKey("other")) + { + fileId = jsonObject["other"] + ""; + } + isUpload = true; + } + else + { + if (jsonObject.ContainsKey("msg")) + { + returnMsg = jsonObject["msg"] + ""; + } + isUpload = false; + } + } + else + { + returnMsg = "上传请求失败"; + isUpload = false; + } + } + else + { + returnMsg = loginResult; + isUpload = false; + } + } + else + { + returnMsg = "上传节点值不能为空"; + isUpload = false; + } + } + catch (Exception ex) + { + returnMsg = ex.Message; + throw new Exception($"文件{Path.GetFileName(filePath)}上传失败\r\n{ex.Message}"); + isUpload = false; + } + msg = returnMsg; + outFileId = fileId; + return isUpload; + } + private bool UploadFileToAudit(string filePath, string idValue, string speciesno, out string msg, out string outFileId) + { + bool isUpload = false; + string File = filePath; + string returnMsg = ""; + string fileId = ""; + string postUrl = ""; + try + { + //获取文件信息 + FileInfo fileInfo = new FileInfo(File); + string suffix = Path.GetExtension(File); + string name = fileInfo.Name; + DateTime creationTime = fileInfo.CreationTime; + byte[] fileBytes = ConvertFileToBytes(File); + string fileStream = Convert.ToBase64String(fileBytes); + string userId = ERPInfo.Instance.UserId; + DateTime uploadTime = DateTime.Now; + string code = ""; + string namepattern = @"^(.*-S[A-Z]\d*)(.*)$"; + Match namematch = Regex.Match(Path.GetFileNameWithoutExtension(fileInfo.Name).Trim(), namepattern); + if (namematch.Success) + { + code = namematch.Groups[1].Value; + } + //上传文件到服务器目录 + postUrl = "{0}Api/FileUploadApi.ashx?moduleId={1}&idValue={2}&speciesno={8}&folder={3}&totsize={4}&position={5}&filename={6}&method={7}&confirm=1"; + if (!string.IsNullOrEmpty(idValue)) + { + string token = ""; + string loginUrl = $"{SystemInfo.Instance.OAUrl}/Api/SysUserAjaxApi.ashx"; + HttpTools.setting("application/x-www-form-urlencoded", null, null, HttpTools.Encode.UTF8); + Dictionary loginPmsDic = new Dictionary(); + loginPmsDic.Add("method", "Login"); + loginPmsDic.Add("username", HttpUtility.UrlEncode(ERPInfo.Instance.UserName)); + loginPmsDic.Add("password", HttpUtility.UrlEncode(ERPInfo.Instance.InPassWord)); + HttpWebResponse loginResponse = HttpTools.Post(loginUrl, "", loginPmsDic, HttpTools.Method.POST, out CookieCollection loginCookie, out string loginResult); + if (loginResponse != null && !string.IsNullOrEmpty(loginResult)) + { + JObject jObject = JsonConvert.DeserializeObject(loginResult); + if (jObject.ContainsKey("success")) + { + if ((jObject["success"] + "").Equals("True")) + { + if (jObject.ContainsKey("token")) + { + token = jObject["token"] + ""; + } + } + } + } + if (!string.IsNullOrEmpty(token)) + { + //string selectSql = $"select * from P_fm_FileTab where parentid in (select dirid from P_fm_DirectoryTab where pid = '{idValue}' and dllcoid = '1000202') and speciesno = '{speciesno}' and sname = '{name.Replace(" ", "")}'"; + //DataTable deleteTable = BaseImpl.GetDataTableResult(selectSql); + //if (deleteTable != null && deleteTable.Rows.Count > 0) + //{ + // foreach (DataRow deleteRow in deleteTable.Rows) + // { + // string field = HttpUtility.UrlEncode(deleteRow["fileId"] + ""); + // string webpath = HttpUtility.UrlEncode(deleteRow["webpath"] + ""); + // //删除文件 + // string deleteUrl = "{0}Api/FileUploadApi.ashx?fileId={1}&filename={2}&method={3}"; + // deleteUrl = string.Format(deleteUrl, SystemInfo.Instance.OAUrl, field, webpath, "DoDelete"); + // HttpHelper.Setting("application/x-www-form-urlencoded", null, null); + // Dictionary deleteHeaderDic = new Dictionary(); + // deleteHeaderDic.Add("Authorization", $"Bearer {token}"); + // HttpWebResponse deleteWebResponse = HttpHelper.Post(deleteUrl, fileStream, null, deleteHeaderDic, out string deleteResult); + // } + //} + postUrl = string.Format(postUrl, SystemInfo.Instance.OAUrl, "1000202", HttpUtility.UrlEncode(idValue), "file", fileBytes.Length, 0, HttpUtility.UrlEncode(name), "DoWebUpload", speciesno); + HttpTools.setting("application/x-www-form-urlencoded", null, null); + string result = ""; + CookieCollection cookieCollection = null; + Dictionary headerDic = new Dictionary(); + headerDic.Add("Authorization", $"Bearer {token}"); + HttpWebResponse webResponse = HttpTools.Post(postUrl, fileStream, null, headerDic, HttpTools.Method.POST, out cookieCollection, out result); + if (webResponse != null && !string.IsNullOrEmpty(result)) + { + JObject jsonObject = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result); + string isSuccess = jsonObject["success"] + ""; + if (isSuccess.Equals("True", StringComparison.CurrentCultureIgnoreCase)) + { + if (jsonObject.ContainsKey("other")) + { + fileId = jsonObject["other"] + ""; + BaseImpl.ExecSqlValue($"update p_fm_filetab set isdisabled = 2 where fileid = '{fileId}'"); + } + isUpload = true; + } + else + { + if (jsonObject.ContainsKey("msg")) + { + returnMsg = jsonObject["msg"] + ""; + } + isUpload = false; + } + } + else + { + returnMsg = "上传请求失败"; + isUpload = false; + } + } + else + { + returnMsg = loginResult; + isUpload = false; + } + } + else + { + returnMsg = "上传节点值不能为空"; + isUpload = false; + } + } + catch (Exception ex) + { + returnMsg = ex.Message; + throw new Exception($"文件{Path.GetFileName(filePath)}上传失败\r\n{ex.Message}"); + isUpload = false; + } + msg = returnMsg; + outFileId = fileId; + return isUpload; + } + /// + /// 记录附件变更数据 + /// + /// + /// + public string BuildBomFileTabSql(DataTable dt, string billno) + { + if (dt == null || dt.Rows.Count == 0) return string.Empty; + var sb = new StringBuilder(); + sb.AppendLine("BEGIN TRANSACTION;"); + foreach (DataRow row in dt.Rows) + { + int fileId = Convert.ToInt32(row["文件ID"]); + string fileName = row["附件名称"].ToString().Replace("'", "''");// 单引号转义 + string speciesNo = row["目录ID"].ToString().Replace("'", "''");// → speciesno + string dirName = row["目录名称"].ToString().Trim();// → pid + int pid = 0; + int.TryParse(dirName, out pid); //目录名称若为数字则转换,否则默认为 0 + sb.AppendFormat( + @"IF NOT EXISTS ( + SELECT 1 FROM bom_filetab + WHERE fileid = {0} + AND speciesno = '{1}' + AND pid = {2}) + INSERT INTO bom_filetab (billno, fileid, filename, speciesno, pid) + VALUES ('{4}',{0}, N'{3}', '{1}', {2}); + ", fileId, speciesNo, pid, fileName, billno); + } + sb.AppendLine("COMMIT TRANSACTION;"); + return sb.ToString(); + } + /// + /// 附件转换byte[] + /// + /// 附件路径 + /// 二进制 + private byte[] ConvertFileToBytes(string filePath) + { + byte[] bytContent = null; + System.IO.FileStream fs = null; + System.IO.BinaryReader br = null; + try + { + fs = new FileStream(filePath, System.IO.FileMode.Open); + } + catch (Exception) + { + throw; + } + finally + { + if (fs != null) + br = new BinaryReader((Stream)fs); + if (br != null) + bytContent = br.ReadBytes((Int32)fs.Length); + if (fs != null) + fs.Dispose(); + } + return bytContent; + } + /// + /// 解析code信息 + /// + /// + /// + /// + /// + /// + private void GetFileCodeInfo(string sourceCode, out string code, out string name, out string bb, out int bc) + { + string namepattern = @"^(.*-S[A-Z]\d*)(.*)$"; + string pattern = @"^(.*?)(\d+)?$"; + string childcode = ""; + string childname = ""; + string childsourceCode = ""; + string childsourceBB = ""; + int childsourceBC = 0; + Match namematch = Regex.Match(Path.GetFileNameWithoutExtension(sourceCode).Trim(), namepattern); + if (namematch.Success) + { + childcode = namematch.Groups[1].Value.Trim(); + childname = namematch.Groups[2].Value.Trim(); + } + Match match = Regex.Match(childcode, pattern); + if (match.Success) + { + childsourceCode = match.Groups[1].Value; + int.TryParse(match.Groups[2].Value, out childsourceBC);//版次 + Match bbMatch = Regex.Match(childsourceCode, @"^.*?([A-Za-z]+)(\d*)$"); + if (bbMatch.Success) + { + childsourceBB = bbMatch.Groups[1].Value.Trim(); + } + } + code = childsourceCode; + name = childname; + bb = childsourceBB; + bc = childsourceBC; + } + /// + /// 解析code信息 + /// + /// + /// + /// + /// + /// + private bool GetOtherFileCodeInfo(string fileName, out string code, out string spec, out string name, out string extension, out string bb, out int bc) + { + string namepattern = @"^(\S+)\s+(\S*-S[A-Z][0-9]*)\s+(.+)(\.[^.]+)$"; + string pattern = @"^(.*?)(\d+)?$"; + var match = Regex.Match(fileName, namepattern); + code = ""; + spec = ""; \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/FrmProgress.resx b/插件库/Lskj.PubBomImportNew/FrmProgress.resx new file mode 100644 index 0000000..7eaf40a --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/FrmProgress.resx @@ -0,0 +1,1253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8q////ZP///5P///+9////1f///+n////x////8/////P////z////8/// + //P////z////8/////P////z////8/////P////z////8/////P////z////8/////P////z////8/// + //P////z////8/////P////z////8/////P////z////8/////P////z////8/////P////z////8/// + //P////z////8/////P////z////8/////P////z////8/////P////z////8/////P////z////8/// + //P////z////8/////P////z////8/////P////z////8/////P////z////8/////P////z////8/// + //P////z////8/////P////z////8/////P////z////8/////P////z////8/////P////z////8f// + /+n////V////vf///5X///9k////KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yj///+D////0/////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////0/// + /4P///8oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /zr///+t//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////+t////OgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xj///+l//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////pf///xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9e////8/// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////9f// + /14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////mf////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///73///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////70AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD////J//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////8kAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////v/////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///53///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9W//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////58f//9/H///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////79f//9/H///ry//////////////////// + ///////////////////////////////////////////////8+v//9vH///v3//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////Dv//////////////////////////////////////////////////////w2z//6hD//+y + Rv//skb//7JG//+yRv//skb//6ZD///Jff////////////////////////jn//++cP//pTD//5sP//+Z + D///oSX//7VZ///juv/////////////////////////////15f//skP//6JD///Gd/////////////// + ////6Mb//6ZD//+lQ///5b///////////////////8Z3//+lQ///qEP//+bD/////////////+/Y//++ + bf//qjr//54U//+ZD///nBD//6c1//+9bf//8tr////////////////////////////////////////U + oP//sE3//54b//+YD///nRf//6xC///Nj/////7///////////////////////////////////////// + ////////////////////////////////////////////////////////////////////+PL///nx///6 + 8v//+vL///ry///68v//+vL///ry///58f//9/H///////////////////////////////////////// + /////////////////w4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///+t//////////////////////// + //////////////////////////////+gGP//dwD//4kA//98AP//dwD//3cA//93AP//YAD//58X//// + ///////////////t0///kw///38A//+HAP//ggD//4AA//+DAP//ggD//4IA///Ogv////////////// + /////////+/X//+GAP//bQD//6Yp//////////////////+4UP//cgD//3IA//+zRP////////////// + ////pin//3IA//93AP//2KD/////////////xnX//20A//97AP//fAD//30A//99AP//gQD//4EA//+M + Af//47z////////////////////////68P//qDz//4EA//+DAP//ggD//4AA//+BAP//ggD//4AA//+e + KP//8tr///////////////////////////////////////////////////////////////////////// + ////////////////////8t3//6tG//+YDv//nBD//5sN//+QAP//kQD//5kI//+fEf//mQf//44A//+J + AP//lxj//9iX////////////////////////////////////////////////rQAAAAAAAAAAAAAAAAAA + AAAAAAAA////Kv///////////////////////////////////////////////////////////603//+I + AP//lAL//6oy//+yRv//skb//7JG//+mQ///yX3//////////////v3//6Ia//+CAP//kgD//4wA//+s + Nf//skb//54T//+LAP//kAD//4EA///lwP//////////////////8dz//5YA//+BAP//skb///////// + ////+vP//5gG//+PAP//kAD//5YC///47/////////////+yRv//hQD//4kA///drf/////////////A + Zf//cQD//6kw///EcP//y4H//8Js//+bEf//kQD//4UA//+aCP//+/X//////////////v7//6Qp//9/ + AP//kQD//4gA//+lJP//skb//6sy//+OAP//jAD//4QA//+WDf//9+z///////////////////////// + //////////////////////////////////////////////////////////r0//+fFv//fAD//4sA//+A + AP//iwD//7JC//+fF///hwD//3wA//+VAP//sD///6sy//+GAP//eAD//9+x//////////////////// + ////////////////////////////LAAAAAAAAAAAAAAAAAAAAAD///+3//////////////////////// + ////////////////////////////////////rTf//4cA//+KAP//6Mf///////////////////////// + ///////////////er///gwD//5MA//+OAP//26r/////////////+e///60///+KAP//gwD//7BB//// + ///////////////x3P//lgD//4EA//+yRv/////////////Xnv//gwD//5QA//+SAP//gwD//9WY//// + /////////7JG//+FAP//iQD//92t/////////////9CN///Liv////////////////////////br//+W + DP//kAD//4YA///gtf/////////////Hdf//fAD//5QA//+JAP//zo7//////////////////+O///+X + EP//jgD//38A//+1Rv////////////////////////////////////////////////////////////// + ////////////////////3a3//4IA//+SAP//piD//7JK//+VEP//vGH////////lwP//mSX//8aD//// + +v///////+O5//93AP//rzz///////////////////////////////////////////////+3AAAAAAAA + AAAAAAAA////Hv////////////////////////////////////////////////////////////////+t + N///hwD//4sA///ht////////////////////////////////////////8Jr//+CAP//hQD//7tW//// + ////////////////////8t3//40A//+LAP//mQf///rz//////////////Hc//+WAP//gQD//7JG//// + /////////7E9//+AAP//pST//6oy//99AP//sDr/////////////skb//4UA//+JAP//3a3///////// + /////////////////////////////////////////5cM//+QAP//hQD//9ig////////+vL//5cC//+O + AP//hAD//8Nt/////////////////////////////+jE//+JAP//kQD//4oA///t0/////////////// + ///////////////////////////////////////////////////////////////Wnf//hwD//40A//+U + Ev//7tD///7+//+tPf//uFP////////45v//jwn//5cR/////////////4wA//+oLP////////////// + //////////////////////////////////////8eAAAAAAAAAAD///+F//////////////////////// + /////////////////////////////////////////603//+HAP//iwD//+C0//////////////////// + ////////////////////t0///4UA//+EAP//1Zr/////////////////////////////ohj//4kA//+S + AP//7dT/////////////8dz//5YA//+BAP//skb////////26f//kQD//4EA///Eb///4rj//4AA//+R + AP//9eb///////+yRv//hQD//4kA///drf///////////////////////////////////////+G9//+i + Kf//jAD//5MA//+KAP//7dP////////er///hwD//5EA//+UBf//+fH///////////////////////// + /////////641//+JAP//gQD//8p+//////////////////////////////////////////////////// + /////////////////////////9mk//+GAP//oRD//48D//+HAP//79n///////+hHP//wGb////////Q + h///eQD///ft////////jAD//6oy//////////////////////////////////////////////////// + /4UAAAAAAAAAAP///9v///////////////////////////////////////////////////////////// + ////rTf//4cA//+LAP//4LT///////////////////////////////////////+1S///hgD//4gA///X + nv////////////////////////////+mKf//iAD//5AA///pyv/////////////x3P//lgD//4EA//+x + RP///////9CN//+CAP//gwD//92t////////lAD//3sA///Pi////////7FE//+FAP//iQD//92t//// + /////////////////////////9qs//+qQP//iQD//4oA//+WAP//eQD//7pV/////////////86J//+E + AP//igD//6sw////////////////////////////////////////xXL//4QA//+FAP//uVX///////// + ////////////////////////////////////////////////////////////////////2aT//4EA//+d + IP//8tj//9Wi//+nK///8d3///////+XAv//2aP///////+9X///4rj///////+SAP//qC3///////// + ////////////////////////////////////////////2wAAAAD///8k//////////////////////// + //////////////////////////////////////////////+tN///hwD//4sA///gtP////////////// + /////////////////////////7ZO//+GAP//hwD//9WZ/////////////////////////////6Un//+I + AP//kAD//+nK//////////////Hc//+WAP//gQD//7ZN////////qy7//4IA//+UAP//9+z///////+0 + Rv//dQD//6sv////////tk3//4UA//+JAP//3a3///////////////////v1//+vSv//ggD//4YA//+T + AP//hgD//4MA//+2V///////////////////y4L//4QA//+HAP//skX///////////////////////// + ///////////////Lgf//hAD//4YA//+0SP////////////////////////////////////////////// + ///////////////////////////////ZpP//iAD//4UA//+6WP///////+fF//+uOv//26///7lU//+h + G///yob//9GN/////////////40A//+pL/////////////////////////////////////////////// + ////////////JP///2b///////////////////////////////////////////////////////////// + /////////603//+HAP//iwD//+C0////////////////////////////////////////tk7//4YA//+H + AP//1Zn/////////////////////////////pSb//4gA//+QAP//6cv/////////////8dz//5YA//+B + AP//wmv///jt//+OAP//ggD//7JC/////////////9ql//+BAP//jgD///ju///Ca///hQD//4kA///d + rf//////////////////rTX//3sA//+XAP//iAD//4kA//+rQ///3bP////////////////////////Q + jP//hQD//4gA//+uOf///////////////////////////////////////8Z2//+EAP//hgD//7ZN//// + /////////////////////////////////////////////////////////////////////////9mk//+I + AP//lwD//30A///Baf///////9ql//+aFv//s0j//7VK//+jJP//skX//82G//+3T///gAD//7JF//// + //////////////////////////////////////////////////////9m////mf////////////////// + ////////////////////////////////////////////////////rTf//4cA//+LAP//4LT///////// + //////////////////////////////+2Tv//hgD//4cA///Vmf////////////////////////////+l + Jv//iAD//5AA///py//////////////x3P//lgD//4EA///Ie///0Y///4QA//+EAP//15////////// + ////+/b//5oI//97AP//0pL//8h5//+FAP//iQD//92t/////////////9yq//+BAP//lwD//4sA//+k + MP//4bz//////////////////////////////////9+x//+IAP//jwD//5sM///+/P////////////// + ////////////////////tEP//4gA//+CAP//wmv///////////////////////////////////////// + ////////////////////////////////////2aT//4gA//+VAP//kQH//6w3///Nh///0Y///7ZP//+2 + T///t0///7tT//+vP///lgH//4MA//+IAP//s0j///////////////////////////////////////// + /////////////////5n///+///////////////////////////////////////////////////////// + //////////////+tN///hwD//4sA///gtP///////////////////////////////////////7ZO//+G + AP//hwD//9WZ/////////////////////////////6Um//+IAP//kAD//+nL//////////////Hc//+W + AP//hgD//7ta//+wQP//hQD//5cF///68///////////////////ulb//3gA//+xQf//ulj//4oA//+J + AP//3a3/////////////wmv//4EA//+MAP//pCv///////////////////////////////////////// + ////+vL//5cD//+OAP//hAD//9SR//////////////////////////////bn//+PAf//kwD//4QA///d + rf/////////////////////////////////////////////////////////////////////////////Z + pP//iAD//44A//+aBv////////ry//+tOP//r0b//7VL//+yRf//r03///bp////////qDD//3oA//+y + Rv//////////////////////////////////////////////////////////v////9n///////////// + /////////////////////////////////////////////////////////603//+HAP//iwD//+C0//// + ////////////////////////////////////tk7//4YA//+HAP//1Zn///////////////////////// + ////pSb//4gA//+QAP//6cv/////////////8dz//5YA//+NAP//qS///58V//+BAP//uFH///////// + ///////////////gtP//hAD//50N//+oLP//kQD//4kA///drf/////////////GdP//gQD//4gA//+v + Pv/////////////////////////////47f///v3/////////////w23//30A//+RAP//kAP//+O+//// + ///////////////69f//pzT//4kA//+IAP//nQ////36//////////////////////////////79//// + /////////////////////////////////////////9mk//+IAP//jwD//5gF///8+P///////604//+g + JP//pyn//6Yn//+bIf//5sL///////+3UP//dQD//7JG//////////////////////////////////// + ///////////////////////Z////6f////////////////////////////////////////////////// + ////////////////////rTf//4cA//+LAP//4LT///////////////////////////////////////+2 + Tv//hgD//4cA///Vmf////////////////////////////+lJv//iAD//5AA///py//////////////x + 3P//lgD//5IA//+YBf//lgD//4UA///drv/////////////////////////+//+fEf//jAD//5gG//+W + AP//iQD//92t/////////////+fE//+EAP//kQD//5AA//+5Vv//3rD//+S8///Zov//qkr//7dR//// + /v/////////////89///nBf//4MA//+OAP//jwD//7lU///Lgf//xHD//58b//+JAP//kAD//4AA///g + tP///////////////////////+7X//+/a///umX//7pi///Fdf//+fH///////////////////////// + ////16D//4cA//+PAP//mAX///v1////////tUz//6s8//+xQf//sED//6Q1///mwv///////7dQ//92 + AP//sEL//////////////////////////////////////////////////////////+n////z//////// + //////////////////////////////////////////////////////////////+nJ///fgD//4IA///e + rv///////////////////////////////////////7BA//99AP//fgD//9KR//////////////////// + /////////54V//9/AP//hwD//+fH//////////////DZ//+OAP//iQD//40A//+EAP//mAT///36//// + /////////////////////////8Bm//95AP//jQD//44A//+AAP//2qf//////////////////8Rq//98 + AP//hwD//4IA//+IAP//iwD//4UA//9oAP//qzL////////////////////////04P//myD//38A//+H + AP//gwD//4MA//+DAP//hwD//4QA//+DAP//0Yn////////////////////////oyP//qCz//8yJ///t + 1P//7db//75j//+vPP//9un////////////////////////Yov//gwD//5AA//+YBf////////////+v + Pf//oSv//6ox//+nK///ozb///nv////////qTL//3cA//+vPP////////////////////////////// + ////////////////////////////8f////P///////////////////////////////////////////// + /////////////////////////7FB//+NDf//kQ3//+K4//////////////////////////////////// + ////ulf//4wN//+NDf//157/////////////////////////////qjH//44N//+WDf//6s7///////// + ////8t7//5sN//+XDf//nBD//4sN///Ebv//////////////////////////////////6Mj//5IN//+a + Df//mw3//48N///fsf///////////////////////9OX//+hKv//kQD//4kA//+HAP//jQD//48L///I + ef/////////////////////////////+9v//wHT//50g//+OAP//iQD//4sA//+UBf//q0T//+S9//// + //////////////////////7//7NH///qzf//683///rt///x3f//6sz//9Wa///AZv////////////// + //////////Tl//+RAP//gQD//5YA//+5Vf//uVb//7ZN//++YP//vmL//71f///CZ///wmr//604//+K + AP//eQD//9CO///////////////////////////////////////////////////////////z////8/// + ////////////////////////////////////////////////////////////////////+/X///ny///5 + 8v///fv////////////////////////////////////////79v//+fL///ny///9+v////////////// + ///////////////69P//+fL///ny///+/P/////////////+/f//+vL///ny///68v//+PL///////// + /////////////////////////////////////PL///ny///68v//+fL///37//////////////////// + ///////////////u3P//4rz//+G8///oyP//+u7///////////////////////////////////////// + /////////+nR///gvP//473///Pm///////////////////////////////////mwv//vmL////////Q + jv//wXb//8Vy///v2f///////7ta///58P///////////////////////+Gx//+VFf//iQD//3sA//98 + AP//ggD//4EA//+AAP//gQD//4AA//97AP//fAD//4sA//+/Yv////////////////////////////// + //////////////////////////////////P////z//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////9yq///Db////////9KR///Adf//zYf//+nK////////v2T///Tk//// + //////////////////////////30///jwf//5L3//+XA///lwP//5cD//+XA///lwP//5cD//+W////i + u///7tn/////////////////////////////////////////////////////////////////////8/// + //P///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////9ef//7NI//// + ////1Jj//9ml///Rj///3a3///bq//+2Tv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////z////8/////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////y4H//7dR///z4P//27L//+nH///v2///qS7//92r//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //P////z//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////wmz//7hZ///Qkv//zo///7FG///Tk/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////8/////P///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////7tf//8+R///SmP//+Oz///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////z////8/////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////P////z//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////8/////P///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////z////8/////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////P////z//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////8/////P///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////z/+vO8//rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///r + zv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzv//687//+vO///rzvP/kQDz/5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+RAP//kQD//5EA//+R + AP//kQD//5EA//+RAP//kQD//5EA8/+TAPP/kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+T + AP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwD//5MA//+TAP//kwDz/5cD8/+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+X + A/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lgL//5YA//+WAf//lgH//5YB//+WAf//lgH//5YB//+WAf//lgH//5YC//+W + Av//lgH//5YB//+WAf//lgH//5YB//+WAf//lgH//5YB//+WAf//lgH//5YA//+XAv//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5gD//+XAP//jAD//4QA//+GAP//iAD//4gA//+H + AP//hwD//4cA//+GAP//hgD//4YA//+GAP//hgD//4YA//+GAP//hgD//4YA//+GAP//hwD//4cA//+H + AP//hwD//4cA//+HAP//iAD//5EA//+aA///lwP//5cD//+XA///lwP//5gD//+XAv//iQD//4cA//+I + AP//iAD//4gA//+IAP//hwD//4wA//+ZA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5gD//+XA///jAD//4sA//+LAP//iwD//4sA//+LAP//iwD//4wA//+XA///mAP//5cD//+X + A///lwP//5cD//+XA///mAP//44A//+KAP//igD//4oA//+JAP//iQD//4gA//+LAP//lwP//5gD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+X + A/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+Z + A///jQD//4YA//+jJf//wGn//9KS///ZpP//2KD//9ab///Vmf//1Jf//9OU///Tlf//05X//9OW///S + k///0pL//9OV///Tlf//05X//9OU///Ul///1Zr//9WZ///VmP//1pv//9ed///apP//skX//4wB//+X + A///lwP//5cD//+XA///lQL//5cE//+tOP//sUP//68+//+vPv//rz7//68+//+yRv//qS7//5QC//+W + Av//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lgL//5cE//+lJf//qCv//6cp//+n + Kf//pyn//6cp//+oK///pSX//5cE//+WAv//lwP//5cD//+XA///lwP//5YC//+WAv//oyH//6ku//+p + Lv//qjH//6s0//+sN///sD///6sz//+WAv//lgL//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///mQP//4cA//+UCv//1J3///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////Jfv//ggD//5cD//+XA///lwP//5cD//+PAP//mQf///35//// + ///////////////////////////////pyf//igD//5UA//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+QAP//mQf///fq///////////////////////////////////36v//mQf//5AA//+X + A///lwP//5cD//+XA///lAD//5AA///rzf//////////////////////////////////9ej//5QA//+S + AP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5kD//+I + AP//mBT///Le//////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////8Js//+F + AP//lwP//5cD//+XA///lwP//5AA//+ZB///+Ov//////////////////////////////////+S+//+L + AP//lQD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5AA//+ZB///+vD///////// + //////////////////////////rw//+ZB///kAD//5cD//+XA///lwP//5cD//+UAP//kAD//+3T//// + ///////////////////////////////w3P//lAD//5IA//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///kAH//4wA///x1/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////wmz//4UA//+XA///lwP//5cD//+XA///kAD//5kH///1 + 5f//////////////////////////////////4rn//4sA//+VAP//lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///kAD//5kH///15f//////////////////////////////////9eX//5kH//+Q + AP//lwP//5cD//+XA///lwP//5QA//+QAP//6cn//////////////////////////////////+7W//+U + AP//kgD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5gC//+B + AP//y3v///////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////C + bP//hQD//5cD//+XA///lwP//5cD//+QAP//mQf///Xl///////////////////////////////////i + uf//iwD//5UA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//// + ///////////////////////////////15f//mQf//5AA//+XA///lwP//5cD//+XA///lAD//5AA///p + yf//////////////////////////////////7tb//5QA//+SAP//lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///jwD//5gK///8+f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////8Js//+FAP//lwP//5cD//+XA///lwP//5AA//+Z + B///9eX//////////////////////////////////+K5//+LAP//lQD//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////////////////////////////////Xl//+Z + B///kAD//5cD//+XA///lwP//5cD//+UAP//kAD//+nJ///////////////////////////////////u + 1v//lAD//5IA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+D + AP//v2H///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////wmz//4UA//+XA///lwP//5cD//+XA///kAD//5kH///15f////////////////////////////// + ////4rn//4sA//+VAP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///kAD//5kG///1 + 5P//////////////////////////////////9eb//5kI//+QAP//lwP//5cD//+XA///lwP//5QA//+Q + AP//6cn//////////////////////////////////+7W//+UAP//kgD//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lgH//4cA///er/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////Jfv//ggD//5cD//+XA///lwP//5cD//+Q + AP//mQf///Xl///////////////////////////////////iuf//iwD//5UA//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+QAP//mAb///Xm///////////////////////////////////1 + 5f//mQf//5AA//+XA///lwP//5cD//+XA///lAD//5AA///pyf////////////////////////////// + ////7tb//5QA//+SAP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+S + AP//lQH///Tl///////////////////////////////////////////////////89P//3bH//9ae///Y + oP//2KH//9ih///Yof//2KH//9ih///Yof//2KH//9ih///Yof//2KH//9ih///Yof//2KH//9ih///Y + of//2qb//7JF//+MAf//lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////////////////////// + /////////+K5//+LAP//lQD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//48A//+c + Dv//+/b///////////////////////////////////Lg//+WAf//kQD//5cD//+XA///lwP//5cD//+U + AP//kAD//+nJ///////////////////////////////////u1v//lAD//5IA//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//4wA//+kIf////////////////////////////// + ////////////////////3aX//5UV//+GAP//hwD//4gA//+IAP//iAD//4gA//+IAP//iAD//4gA//+I + AP//iAD//4gA//+IAP//iAD//4gA//+IAP//iAD//4gA//+JAP//kQD//5oD//+XA///lwP//5cD//+X + A///kAD//5kH///15f//////////////////////////////////4rn//4sA//+VAP//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///iQD//6ku//////////////////////////////////// + ////7tb//5QA//+SAP//lwP//5cD//+XA///lwP//5QA//+QAP//6cn///////////////////////// + /////////+7W//+UAP//kgD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///iAD//68+/////////////////////////////////////////////+fG//+DAP//hwD//5cA//+W + Af//lgH//5YA//+WAP//lgD//5YA//+WAP//lgD//5YA//+WAP//lgD//5YA//+WAP//lgD//5YA//+W + AP//lgD//5YA//+XAv//lwP//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//////////////////// + ///////////////iuf//iwD//5UA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5gD//+B + AP//wmv////////////////////////////////////////pyv//jwD//5QA//+XA///lwP//5cD//+X + A///lAD//5AA///pyf//////////////////////////////////7tb//5QA//+SAP//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+GAP//tU3///////////////////////// + ////////////////////rTb//4EA//+ZA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5AA//+ZB///9eX//////////////////////////////////+K5//+LAP//lQD//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+YA///kQD//4QA///rzv////////////////////////////// + /////////+K5//+KAP//lQD//5cD//+XA///lwP//5cD//+UAP//kAD//+nJ//////////////////// + ///////////////u1v//lAD//5IA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//4YA//+4Uv////////////////////////////////////////Xm//+TAP//kgD//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///kAD//5kH///15f////////////// + ////////////////////4rn//4sA//+VAP//lwP//5cD//+XA///lwP//5cD//+YA///lgD//4gA//96 + AP//wmb/////////////////////////////////////////////1Zn//4QA//+XAv//lwP//5cD//+X + A///lwP//5QA//+QAP//6cn//////////////////////////////////+7W//+UAP//kgD//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///hgD//7dP//////////////////// + ////////////////////4bj//4oA//+WAP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+QAP//mQf///Xl///////////////////////////////////er///egD//4UA//+H + AP//iAD//4cA//+HAP//hQD//4IA//+JAP//oSn//9KW//////////////////////////////////// + //////////////+4Tf//hQD//5cD//+XA///lwP//5cD//+XA///lAD//5AA///pyf////////////// + ////////////////////7NH//4cA//+FAP//iwD//4sA//+LAP//iwD//4sA//+LAP//iwD//4sA//+L + AP//iwD//4wA//+PAP//kgD//5YA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+GAP//tU3////////////////////////////////////////cq///iQD//5UA//+X + A///lwP//5gD//+WAP//iAD//4MA//+DAP//gwD//4MA//+DAP//gwD//4MA//+DAP//gwD//4MA//+D + AP//gwD//4MA//+DAP//iQD//5kE//+XBP//lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////// + /////////////////////////+nK//+oP///sED//7FC//+xQf//sUP//7RI//+7Xv//yYL//+K///// + ////////////////////////////////////////////////////9ef//48A//+SAP//lwP//5cD//+X + A///lwP//5cD//+UAP//kAD//+nJ///////////////////////////////////x3f//pSn//6Qp//+o + Lf//qC3//6gt//+oLf//qC3//6gt//+oLf//qC3//6gt//+nKv//oyH//50S//+TAP//iAD//4YA//+V + AP//mQP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+X + A/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//4YA//+1Tv////////////// + /////////////////////////96u//+KAP//lQD//5cD//+YBP//lAL//4oA//+0Sf//y4H//8uB///L + gf//y4H//8uB///Lgf//y4H//8uB///Lgf//y4H//8uB///Lgf//y4H//8uB//++YP//kgL//5YC//+X + A///lwP//5cD//+XA///kAD//5kH///15f////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////+6Vf//ggD//5gD//+XA///lwP//5cD//+XA///lwP//5QA//+QAP//6cn///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////v//+vP//+7V///Zpf//skz//4kA//+JAP//mQP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///hgD//7VM////////////////////////////////////////3q///4oA//+V + AP//lwP//5cC//+HAP//wnL///////////////////////////////////////////////////////// + //////////////////////////Lf//+KAP//lQD//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v//yX3//4YA//+VAv//lwP//5cD//+X + A///lwP//5cD//+XA///lAD//5AA///pyf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////37f//5oa//+FAP//mQP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+HAP//tEn///////// + ///////////////////////////////er///igD//5UA//+XA///kQD//5cH///9+v////////////// + ////////////////////////////////////////////////////////////////////5Lz//4wA//+V + AP//lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////79//+zR///egD//5kD//+XA///lwP//5cD//+XA///lwP//5cD//+UAP//kAD//+nJ//// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////+e3//54j//+GAP//mQP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//4cA//+zRv///////////////////////////////////////96v//+K + AP//lQD//5cD//+OAP//nhL///35//////////////////////////////////////////////////// + ///////////////////////////////kvP//jAD//5UA//+XA///lwP//5cD//+XA///kAD//5kH///1 + 5f////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////+wQv//ggD//5kD//+X + A///lwP//5cD//+XA///lwP//5QA//+QAP//6cn///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////9+b//48D//+PAP//mAT//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///hwD//7JG//// + ////////////////////////////////////3q///4oA//+VAP//lwP//48A//+dEv//+/X///////// + /////////////////////////////////////////////////////////////////////////+S8//+M + AP//lQD//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////7//+YEv//igD//5gD//+XA///lwP//5cD//+XA///lAD//5AA///p + yf////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////0Ij//4EA//+Y + Av//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+HAP//tEn////////////////////////////////////////e + r///igD//5UA//+XA///jgD//54O//////////////////////////////////////////////////// + ////////////////////////////////////5Lz//4wA//+VAP//lwP//5cD//+XA///lwP//5AA//+Z + B///9eX///////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////+Cw//+F + AP//lgH//5cD//+XA///lwP//5cD//+UAP//kAD//+nJ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+/f//mw///48A//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//4YA//+1 + TP///////////////////////////////////////96v//+KAP//lQD//5cD//+UAP//jAD//+rK//// + ///////////////////////////////////////////////////////////////////////////////q + yv//iwD//5UA//+XA///lwP//5cD//+XA///kAD//5kH///15f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////6ck//+KAP//lwP//5cD//+XA///lwP//5QA//+Q + AP//6cn///////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////A + Y///gwD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///hgD//7ZQ//////////////////////////////////// + ////3a3//4oA//+VAP//lwP//5gD//+MAP//nhz//+O8///68v//+vL///ry///68v//+vL///ry///6 + 8v//+vL///ry///68v//+vL///ry///68v//+vL//+Cy//+NAP//lQD//5cD//+XA///lwP//5cD//+Q + AP//mQf///Xl///////////////////////////////////79f//vGn//6Uz//+oLf//qjD//6ow//+q + MP//qjD//6ow//+qMP//qjD//6gt//+lM///vGr///v1//////////////////////////////////// + ////w27//4MA//+XA///lwP//5cD//+XA///lAD//5AA///pyf////////////////////////////// + /////////9qh//+pPv//py3//6kw//+qMP//qjD//6ow//+qMP//qjD//6ow//+pL///pi3//6tG///j + tP///////////////////////////////////////9ig//+FAP//lwH//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+G + AP//uFL////////////////////////////////////////drv//iQD//5YA//+XA///lwP//5oD//+M + AP//jgD//5wQ//+cEP//nBD//5wQ//+cEP//nBD//5wQ//+cEP//nBD//5wQ//+cEP//nBD//5wQ//+c + EP//mw3//5YD//+XA///lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////////////////////// + /////fv//6ov//94AP//iQD//4sA//+KAP//igD//4oA//+KAP//igD//4oA//+KAP//iwD//4kA//94 + AP//qjD///78///////////////////////////////////Tlf//hQD//5cC//+XA///lwP//5cD//+U + AP//kAD//+nJ///////////////////////////////////Yn///fQD//4MA//+LAP//igD//4oA//+K + AP//igD//4oA//+KAP//igD//4oA//+LAP//gQD//4IA///iuf////////////////////////////// + ////58b//40A//+UAP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//4YA//+2Tf////////////////////////////// + /////////+bD//+MAP//lQD//5cD//+XA///lwP//5gD//+UAP//jwD//48A//+PAP//jwD//48A//+P + AP//jwD//48A//+PAP//jwD//48A//+PAP//jwD//48A//+RAP//mAP//5cD//+XA///lwP//5cD//+X + A///kAD//5kH///15f/////////////////////////////gs///ggD//5YA//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5YA//+DAP//4LX///////////////////////// + /////////9yq//+JAP//lgD//5cD//+XA///lwP//5QA//+QAP//6cn///////////////////////// + /////////6Mg//+FAP//mAT//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+Z + A///gAD//689///////////////////////////////////w2v//lAD//5IA//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///iAD//68+////////////////////////////////////////+vL//5kF//+PAP//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//////////////////// + /////////9WY//+GAP//lwD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwD//4YA///WnP//////////////////////////////////4LT//4oA//+VAP//lwP//5cD//+X + A///lAD//5AA///pyf///////////////////////////////v//oBj//44A//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+JAP//qjH///////////////////////// + //////////Tk//+YA///kQD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+LAP//pST///////////////////////// + ////////////////////t1H//38A//+ZA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5AA//+ZB///9eX/////////////////////////////153//4gA//+WAP//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+WAP//iAD//9ih//////////////////// + ///////////////gtP//igD//5UA//+XA///lwP//5cD//+UAP//kAD//+nJ//////////////////// + ///////////+//+iHf//jgD//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//4oA//+sNv//////////////////////////////////9OT//5gE//+RAP//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5EA//+YBP//9+v////////////////////////////////////////w2///igD//4UA//+Y + AP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///kAD//5kH///15f////////////// + ///////////////Vmf//hAD//5gA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5gA//+EAP//1pz//////////////////////////////////9uo//+JAP//lgD//5cD//+X + A///lwP//5QA//+QAP//6cn//////////////////////////////////58V//+NAP//lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///hwD//6ku//////////////////// + ///////////////w2///lQD//5IA//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lgD//4kA///iuf////////////// + ///////////////////////////////ktv//lRT//4IA//+DAP//gwD//4QA//+EAP//hAD//4QA//+E + AP//hAD//4QA//+FAP//hQD//4UA//+FAP//hQD//4UA//+FAP//hgD//4YA//+QAP//mgT//5cD//+X + A///lwP//5cD//+QAP//mQf///Xl/////////////////////////////+3T//+IAP//jAD//5gC//+W + Av//lgH//5YB//+WAf//lgH//5YB//+WAf//lgH//5YC//+YAv//iwD//4gA///t1P////////////// + ////////////////////0Y///4QA//+XAv//lwP//5cD//+XA///lAD//5AA///pyf////////////// + ////////////////////skX//3oA//+XAP//lwL//5YB//+WAf//lgH//5YB//+WAf//lgH//5YB//+W + Af//lwL//5YA//94AP//wGX//////////////////////////////////+bD//+MAP//lQD//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///ggD//8Vy///////////////////////////////////////////////////8 + 8v//1qX//8mA///Kf///yX3//8h7///Hef//x3b//8Z0///Fcv//xG///8Nt///Ca///wWj//8Bm//+/ + ZP//vmH//71f//+8Xf//vF3//6Yn//+RAv//lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////// + /////////////////////////8+G//+EAP//ggD//4YA//+GAP//hgD//4YA//+GAP//hgD//4YA//+G + AP//hgD//4IA//+FAP//z4f////////////////////////////////////////AZv//hAD//5cD//+X + A///lwP//5cD//+UAP//kAD//+nJ///////////////////////////////////y4P//nB///4AA//+F + AP//hgD//4YA//+GAP//hgD//4YA//+GAP//hgD//4YA//+EAP//gAD//6Yv///47v////////////// + ////////////////////05X//4QA//+XAv//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+X + A/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+MAP//oBb///////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////yHr//4MA//+X + A///lwP//5cD//+XA///kAD//5kH///15f///////////////////////////////////////+vL///Q + lf//0pL//9OV///Tlf//05X//9OV///Tlf//05X//9OV///Skv//0JX//+vM//////////////////// + /////////////////////////6ck//+LAP//lwP//5cD//+XA///lwP//5QA//+QAP//6cn///////// + ///////////////////////////////+9///1aT//9CP///Tlf//05X//9OV///Tlf//05X//9OV///T + lf//05T//9CP///Yqf////////////////////////////////////////////+3Sv//hQD//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cB//+CAP//2qD///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////Dbf//hQD//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////rzv//iQD//5UA//+X + A///lwP//5cD//+XA///lAD//5AA///pyf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////+O3//5IB//+SAP//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///mAP//4sA//+Y + EP////3///////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////8Js//+F + AP//lwP//5cD//+XA///lwP//5AA//+ZB///9eX///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////7RG//+EAP//mAP//5cD//+XA///lwP//5cD//+UAP//kAD//+nJ//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////CZP//ggD//5gC//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///mQL//4IA//+ySv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////wmz//4UA//+XA///lwP//5cD//+XA///kAD//5kH///1 + 5f////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////cpv//hAD//5UB//+X + A///lwP//5cD//+XA///lwP//5QA//+QAP//6cn///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////6MP//4cA//+TAf//lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwL//4EA//+3Wf////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////C + bP//hQD//5cD//+XA///lwP//5cD//+QAP//mQf///Xl//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////2ab//4oA//+OAP//mAP//5cD//+XA///lwP//5cD//+XA///lAD//5AA///p + yf////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////+fG//+RB///igD//5kD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+YA///lgH//4IA//+lMf//47////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////8Nw//+EAP//lwP//5cD//+XA///lwP//48A//+Z + B////vr///////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////5cP//7VT//+HAP//jgD//5kD//+X + A///lwP//5cD//+XA///lwP//5cD//+UAP//kAD//+7W//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////Lj///Eev//jQD//4oA//+aA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+YA///mAL//4cA//+LAP//r0X//9Sb///s1P///Pf///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////xXP//4QA//+XA///lwP//5cD//+XA///kQD//5kH///s0P//9+v///Xn///15///9ef///Xn///1 + 5///9ef///Xn///15///9ef///Xn///15///9ef///Xn///15///9ej///bp///15v//7tb//+W////W + nv//w3D//6gv//+MAP//hAD//5UA//+ZA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5QA//+Q + AP//58X///37///9+v///fr///36///9+v///fr///36///9+v///fr///36///9+v///fr///36///9 + +v///fr///36///9+////Pj///nw///v2P//5L7//9GR//+1U///lQb//4IA//+RAP//mQT//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///mAP//5QA//+H + AP//hQD//5IA//+fF///qjD//605//+tOP//rTf//603//+tN///rTf//603//+tN///rTf//603//+t + N///rTf//603//+tN///rTf//603//+tN///rTj//68+//+gGf//kwL//5cD//+XA///lwP//5cD//+X + A///lwP//5kH//+aC///mQj//5kI//+ZCP//mQj//5kI//+ZCP//mQj//5kI//+ZCP//mQj//5kI//+Z + CP//mQj//5kI//+ZCP//mQn//5kH//+UAP//jQD//4cA//+EAP//igD//5QA//+YA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwL//5YC//+fFv//oRz//6Eb//+hG///oRv//6Eb//+h + G///oRv//6Eb//+hG///oRv//6Eb//+hG///oRv//6Eb//+hG///oRv//6Ec//+gGP//nA///5QA//+M + AP//hQD//4UA//+RAP//mAL//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XAf//kwD//44A//+KAP//iQD//4kA//+J + AP//iQD//4kA//+JAP//iQD//4kA//+JAP//iQD//4kA//+JAP//iQD//4kA//+JAP//iQD//4kA//+J + AP//iAD//5EA//+ZA///lwP//5cD//+XA///lwP//5cD//+XA///kQD//5AA//+QAP//kAD//5AA//+Q + AP//kAD//5AA//+QAP//kAD//5AA//+QAP//kAD//5AA//+QAP//kAD//5AA//+QAP//kAD//5IA//+V + AP//lgH//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///mAP//48A//+NAP//jQD//40A//+NAP//jQD//40A//+NAP//jQD//40A//+NAP//jQD//40A//+N + AP//jQD//40A//+NAP//jQD//44A//+PAP//kgD//5UA//+XAv//lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwPz/5cD8/+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD8/+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwPz/5cD8/+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA/P/lwPz/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD8/+X + A/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwPx/5cD6f+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A+n/lwPZ/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD2f+XA7//lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwO//5cDmf+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA5n/lwNm/5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cDZv+XAyT/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwMkAAAAAP+XA9v/lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD2wAAAAAAAAAA/5cDhf+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwOFAAAAAAAAAAD/lwMe/5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XAx4AAAAAAAAAAAAAAAD/lwO3/5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwO3AAAAAAAAAAAAAAAAAAAAAP+X + Ayr/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XAyoAAAAAAAAAAAAAAAAAAAAAAAAAAP+XA6v/lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwOtAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/5cDDv+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XAw4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5cDVv+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwNWAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/5cDnf+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cDnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5cDv/+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA78AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5cDyf+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwPJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/5cDvf+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cDvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5cDmf+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/5cDYP+XA/P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA/P/lwNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5cDGP+X + A6P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwOj/5cDGAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+XAzr/lwOt/5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwOt/5cDOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD/lwMo/5cDg/+XA9P/lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+X + A///lwP//5cD//+XA///lwP//5cD//+XA///lwP//5cD//+XA9P/lwOD/5cDKAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+X + Ayr/lwNk/5cDk/+XA73/lwPV/5cD6f+XA/H/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+X + A/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+X + A/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+X + A/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+X + A/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+X + A/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPz/5cD8/+XA/P/lwPx/5cD6f+XA9X/lwO9/5cDlf+X + A2T/lwMqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAA/////AAAAAAAAAAA + AAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///gAAAAAAAAAAAAAAAAAH//wAAAAAA + AAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAH/8AAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gA + AAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA + AAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAB+AA + AAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAP+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA + AB/8AAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA + AAAAAAH//+AAAAAAAAAAAAAAAAAH///wAAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAD////8AAAAA + AAAAAAAAAAD/////8AAAAAAAAAAAAAAP//8= + + + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/Lskj.PubBomImportNew.csproj b/插件库/Lskj.PubBomImportNew/Lskj.PubBomImportNew.csproj new file mode 100644 index 0000000..63cb521 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/Lskj.PubBomImportNew.csproj @@ -0,0 +1,141 @@ + + + + + Debug + AnyCPU + {8C507C31-8C19-46C9-82F8-85DDCAE69190} + Library + Lskj.PubBomImport + Lskj.PubBomImport + v4.0 + 512 + true + + + true + full + false + ..\..\Debug\Lib\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + False + ..\..\引用DLL\Newtonsoft.Json.dll + + + ..\..\..\引用DLL\NPOI.dll + + + ..\..\..\引用DLL\NPOI.OOXML.dll + + + D:\工作\lserp_cs_6.0\引用DLL\NPOI.OpenXml4Net.dll + + + D:\工作\lserp_cs_6.0\引用DLL\NPOI.OpenXmlFormats.dll + + + + + + + + + + + + + + + + UserControl + + + FrmBillInfo.cs + + + Form + + + FrmMain.cs + + + Form + + + FrmProgress.cs + + + + True + True + Settings.settings + + + + + + FrmBillInfo.cs + + + FrmMain.cs + + + FrmProgress.cs + + + + + + {7EAFCCC2-A18F-49E9-85C6-A984966CFD01} + Lskj.Business + + + {447CDC40-659F-4CCA-9ED6-8E818B4CF8BF} + Lskj.Control + + + {2A1BE6AC-1077-491B-A754-C5822FE8121E} + Lskj.Core + + + {308B9B18-9BE2-495C-9C64-EED81D567813} + Lskj.Data + + + {52BC40E0-C0C6-4F78-996B-CAE028D209CA} + Lskj.Model + + + {A51BF642-6543-4DE3-8948-83F558B72BD4} + Lskj.Util + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/Properties/AssemblyInfo.cs b/插件库/Lskj.PubBomImportNew/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..090c46f --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/Properties/AssemblyInfo.cs @@ -0,0 +1,9 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Lskj.PubBomImport")] +[assembly: AssemblyDe \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/Properties/Settings.Designer.cs b/插件库/Lskj.PubBomImportNew/Properties/Settings.Designer.cs new file mode 100644 index 0000000..be00b06 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/Properties/Settings.Designer.cs @@ -0,0 +1,14 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace Lskj.PubBomImport.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttrib \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/Properties/Settings.settings b/插件库/Lskj.PubBomImportNew/Properties/Settings.settings new file mode 100644 index 0000000..ecda03c --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/Properties/Settings.settings @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/插件库/Lskj.PubBomImportNew/app.config b/插件库/Lskj.PubBomImportNew/app.config new file mode 100644 index 0000000..7078b78 --- /dev/null +++ b/插件库/Lskj.PubBomImportNew/app.config @@ -0,0 +1,15 @@ + + + + +
+ + + + + + + + + + \ No newline at end of file