diff --git a/AIMS/AIMS.csproj b/AIMS/AIMS.csproj index f60e29f..d49bc71 100644 --- a/AIMS/AIMS.csproj +++ b/AIMS/AIMS.csproj @@ -1317,6 +1317,7 @@ + diff --git a/AIMS/Extensions/itextsharp.dll b/AIMS/Extensions/itextsharp.dll new file mode 100644 index 0000000..180d255 Binary files /dev/null and b/AIMS/Extensions/itextsharp.dll differ diff --git a/AIMS/OperationAanesthesia/frmAanesthesiaRecord.Designer.cs b/AIMS/OperationAanesthesia/frmAanesthesiaRecord.Designer.cs index e8be1b2..3a7f421 100644 --- a/AIMS/OperationAanesthesia/frmAanesthesiaRecord.Designer.cs +++ b/AIMS/OperationAanesthesia/frmAanesthesiaRecord.Designer.cs @@ -872,8 +872,8 @@ this.superTabMain.ControlBox.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { this.superTabMain.ControlBox.MenuBox, this.superTabMain.ControlBox.CloseBox}); - this.superTabMain.Controls.Add(this.superTabControlPanel1); this.superTabMain.Controls.Add(this.superTabControlPanel2); + this.superTabMain.Controls.Add(this.superTabControlPanel1); this.superTabMain.Dock = System.Windows.Forms.DockStyle.Fill; this.superTabMain.Location = new System.Drawing.Point(0, 58); this.superTabMain.Name = "superTabMain"; @@ -984,7 +984,7 @@ this.superTabControlPanel2.Dock = System.Windows.Forms.DockStyle.Fill; this.superTabControlPanel2.Location = new System.Drawing.Point(0, 28); this.superTabControlPanel2.Name = "superTabControlPanel2"; - this.superTabControlPanel2.Size = new System.Drawing.Size(1760, 904); + this.superTabControlPanel2.Size = new System.Drawing.Size(1389, 803); this.superTabControlPanel2.TabIndex = 0; this.superTabControlPanel2.TabItem = this.spTabBM; // @@ -997,7 +997,7 @@ this.panelExBLSJ.Dock = System.Windows.Forms.DockStyle.Fill; this.panelExBLSJ.Location = new System.Drawing.Point(0, 0); this.panelExBLSJ.Name = "panelExBLSJ"; - this.panelExBLSJ.Size = new System.Drawing.Size(1760, 904); + this.panelExBLSJ.Size = new System.Drawing.Size(1389, 803); this.panelExBLSJ.Style.Alignment = System.Drawing.StringAlignment.Center; this.panelExBLSJ.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; this.panelExBLSJ.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; @@ -1016,7 +1016,7 @@ this.panel82.Dock = System.Windows.Forms.DockStyle.Fill; this.panel82.Location = new System.Drawing.Point(0, 0); this.panel82.Name = "panel82"; - this.panel82.Size = new System.Drawing.Size(1760, 904); + this.panel82.Size = new System.Drawing.Size(1389, 803); this.panel82.TabIndex = 3; this.panel82.Scroll += new System.Windows.Forms.ScrollEventHandler(this.panel82_Scroll); // diff --git a/AIMS/OperationAanesthesia/frmAanesthesiaRecord.cs b/AIMS/OperationAanesthesia/frmAanesthesiaRecord.cs index 745e748..be8ba35 100644 --- a/AIMS/OperationAanesthesia/frmAanesthesiaRecord.cs +++ b/AIMS/OperationAanesthesia/frmAanesthesiaRecord.cs @@ -1215,7 +1215,6 @@ namespace AIMS.OperationAanesthesia zgcAnaesRecord2.Visible = true; } - private void _record_SpeedyDrugsParam(List factDrugs) { frmFactSpeedyDrug frmFact = new frmFactSpeedyDrug(); @@ -1312,14 +1311,12 @@ namespace AIMS.OperationAanesthesia MessageBox.Show("请选择患者"); } } - private void FrmFactOutputLiquids_OutParam() { templateManage.Bind("OutputManage"); templateManage.Bind("RemarkManage"); zgcAnaesRecord.Refresh(); } - private void button6_Click(object sender, EventArgs e) { frmAanesthesiaQuality frmAnaseDataQuality = new frmAanesthesiaQuality(); @@ -2254,6 +2251,13 @@ namespace AIMS.OperationAanesthesia { bool isTrue = true; + if (PublicMethod.HospitalName.Contains("秦皇岛")) + if (_record.AnesthesiaDoctor == null || _record.AnesthesiaDoctor.Trim() == "") + { + message = "请填写麻醉医生"; + isTrue = false; + } + if (_record.AnesthesiaDoctor != null && _record.AnesthesiaDoctor.Trim() != "") { if (_record.AnaseDataQualityRecordList == null || _record.AnaseDataQualityRecordList.Count <= 0) diff --git a/AIMS/OperationAfter/frmNotesRecordExport.cs b/AIMS/OperationAfter/frmNotesRecordExport.cs index 143127c..64e8e38 100644 --- a/AIMS/OperationAfter/frmNotesRecordExport.cs +++ b/AIMS/OperationAfter/frmNotesRecordExport.cs @@ -86,7 +86,7 @@ namespace AIMS { record.Content6 = dr.Cells[7].EditedFormattedValue.ToString(); record.Content7 = dr.Cells[8].EditedFormattedValue.ToString(); - record.Content8 = dr.Cells[9].EditedFormattedValue.ToString(); + record.Content8 = dr.Cells[9].EditedFormattedValue.ToString(); record.ExecWork = dr.Cells[10].EditedFormattedValue.ToString(); } else if (selectdgv.Columns.Count == 9) @@ -270,7 +270,7 @@ namespace AIMS { record.Content6 = dr.Cells[7].EditedFormattedValue.ToString(); record.Content7 = dr.Cells[8].EditedFormattedValue.ToString(); - record.Content8 = dr.Cells[9].EditedFormattedValue.ToString(); + record.Content8 = dr.Cells[9].EditedFormattedValue.ToString(); record.ExecWork = dr.Cells[10].EditedFormattedValue.ToString(); } else if (selectdgv.Columns.Count == 9) @@ -318,7 +318,7 @@ namespace AIMS record.Content5, record.Content6, record.Content7, - record.Content8, + record.Content8, record.ExecWork }; rowNum++; @@ -360,12 +360,13 @@ namespace AIMS rowNum++; } } - if (isprintview==true) - excel.PrintPreview(); + if (isprintview == true) + excel.PrintPreview(); else excel.Print(); excel.Close(); - break; + if (isprintview == true) + break; } } diff --git a/AIMS/OperationAfter/frmOperationCharg3.cs b/AIMS/OperationAfter/frmOperationCharg3.cs index 9b74271..b2fa8fc 100644 --- a/AIMS/OperationAfter/frmOperationCharg3.cs +++ b/AIMS/OperationAfter/frmOperationCharg3.cs @@ -411,11 +411,11 @@ namespace AIMS.OperationAfter.UI { string feerid = item.Cells[0].EditedFormattedValue.ToString(); FeesRecord report = BFeesRecord.SelectSingle(Convert.ToInt32(feerid)); - report.InsureNO = item.Cells[10].EditedFormattedValue.ToString(); - report.Extend5 = item.Cells[13].EditedFormattedValue.ToString(); - report.Conclusion = item.Cells[14].EditedFormattedValue.ToString(); - report.IsInsure = item.Cells[15].EditedFormattedValue.ToString(); - report.LimitDrug = item.Cells[2].EditedFormattedValue.ToString(); + report.InsureNO = item.Cells[6].EditedFormattedValue.ToString(); + report.Extend5 = item.Cells[12].EditedFormattedValue.ToString(); + report.Conclusion = item.Cells[10].EditedFormattedValue.ToString(); + report.IsInsure = item.Cells[9].EditedFormattedValue.ToString(); + //report.LimitDrug = item.Cells[2].EditedFormattedValue.ToString(); BFeesRecord.Update(report); } MessageBox.Show("保存成功!", "系统提示"); @@ -466,5 +466,208 @@ namespace AIMS.OperationAfter.UI } } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + + KillAllExcel(); + if (dgvDrugs.Rows.Count <= 0) return; + List groupedList = new List(); + foreach (DataGridViewRow item in dgvDrugs.Rows) + { + groupedList.Add(item); + } + int n = 21; + List> groupedLists = new List>(); + for (int i = 0; i < groupedList.Count; i += n) + { + List group = groupedList.GetRange(i, Math.Min(n, groupedList.Count - i)); + groupedLists.Add(group); + } + + foreach (List item in groupedLists) + { + ExprotExcel3(item, true); + } + } + + private void ExprotExcel3(List itemlist, bool isPrint = false) + { + //自定义表头 + string title = "麻醉、精一药品注射剂使用、及残余液处理登记表"; + + //是否横向 + bool xlLandscape = true; + if (dataGridViewSetting != null && dataGridViewSetting.Landscape == false) xlLandscape = false; + //主体字体大小 + int BodySize = 9; + if (dataGridViewSetting != null && dataGridViewSetting.FontSize > 0) BodySize = dataGridViewSetting.FontSize; + + myExcel = new Microsoft.Office.Interop.Excel.Application(); + this.Cursor = Cursors.WaitCursor; + //保存文化环境 + System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture; + System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); + + Workbook workbookData = myExcel.Workbooks.Add(Missing.Value); + Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)workbookData.Worksheets[1]; + + xlSheet.Name = title; + + if (isPrint == false) + myExcel.Visible = true; + + myExcel.Cells[1, 1] = title;//默认的就是在sheet1里面的。 + string DrugName = "科室:麻醉科"; + myExcel.Cells[2, 1] = DrugName;//默认的就是在sheet1里面的。 + int startIndex = 3; + + WorksheetClass wsClass = new WorksheetClass(); + + Dictionary Columns = new Dictionary(); + //填充标题 + for (int i = 0; i < dgvDrugs.Columns.Count; i++) + { + if (dataGridViewSetting != null) + { + foreach (var item in dataGridViewSetting.Exports) + { + if (dgvDrugs.Columns[i].Name == item.Name) + { + if (item.IsPrint == true) + { + Columns.Add(i, dgvDrugs.Columns[i].HeaderText); + continue; + } + + } + } + } + else + { + if (dgvDrugs.Columns[i].Visible == true) + Columns.Add(i, dgvDrugs.Columns[i].HeaderText); + } + } + + List> ColumnsStr = Columns.ToList(); + + for (int i = 0; i < ColumnsStr.Count; i++) + { + myExcel.Cells[startIndex, i + 1] = ColumnsStr[i].Value; + if (dataGridViewSetting != null) + { + foreach (var item in dataGridViewSetting.Exports) + { + if (ColumnsStr[i].Value == item.Text) + { + xlSheet.get_Range(xlSheet.Cells[startIndex, i + 1], xlSheet.Cells[startIndex, i + 1]).ColumnWidth = item.PrintWidth;//列宽 + } + } + } + else + { + xlSheet.get_Range(xlSheet.Cells[startIndex, i + 1], xlSheet.Cells[startIndex, i + 1]).ColumnWidth = 5;//列宽 + } + } + //获得数据表的值 + int RowCount = itemlist.Count; + int colCount = ColumnsStr.Count; + //设置填充单元格样式 + xlSheet.get_Range(xlSheet.Cells[startIndex, 1], xlSheet.Cells[RowCount + startIndex, colCount]).Borders.LineStyle = XlLineStyle.xlContinuous;//边框的样式 + object[,] objData = new object[RowCount, colCount]; + + //将DataTable里的值填充到对象数组中 + for (int i = 0; i < RowCount; i++) + { + for (int j = 0; j < colCount; j++) + { + if (dgvDrugs.Columns[ColumnsStr[j].Key].Name == "序号" || dgvDrugs.Columns[ColumnsStr[j].Key].Name == "ApplyId") + objData[i, j] = i + 1; + else if (itemlist[i].Cells[ColumnsStr[j].Key].Value != null) + objData[i, j] = itemlist[i].Cells[ColumnsStr[j].Key].Value.ToString().Trim(); + } + System.Windows.Forms.Application.DoEvents(); + } + + //将对象数组的值赋值给Excel + Range range = xlSheet.get_Range(xlSheet.Cells[4, 1], xlSheet.Cells[RowCount + startIndex, colCount]); + range.NumberFormat = "@"; + range.Value2 = objData; + range.RowHeight = 19; + //xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[RowCount + 2, colCount]).Font.Size = BodySize;//字体大小 + + //设置主标题单元格的样式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).MergeCells = true;//合并单元格 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平对齐方式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直对齐方式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.Bold = true;//字体加粗 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.ColorIndex = 0;//字体颜色 + //xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.Italic = true;//是否斜体 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.Size = 20;//字体大小 + //xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[2, colCount]).Borders.LineStyle = XlLineStyle.xlContinuous;//边框样式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).RowHeight = 33.75;//行高 + + xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[2, colCount]).MergeCells = true;//合并单元格 + + //设置标题单元格样式 + xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[startIndex, colCount]).RowHeight = 21;//行高 + + if (xlLandscape == true) + xlSheet.PageSetup.Orientation = XlPageOrientation.xlLandscape;//页面方向为横向 + //复苏文化环境 + System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; + try + { + if (isPrint == true) + xlSheet.PrintOutEx(); + //myExcel.Save(@"D:a.xls"); + //myExcel.Quit(); + this.Cursor = Cursors.Default; + //MessageBox.Show("导出成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + } + finally + { + if (isPrint == true) + { + //释放资源 + System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); + System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookData); + System.Runtime.InteropServices.Marshal.ReleaseComObject(range); + System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel); + GC.Collect(); + range = null; + xlSheet = null; + workbookData = null; + myExcel = null; + KillAllExcel(); + } + } + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + if (comboBoxExType.Text == "") return; + if (cnoDrugName.Text == "") return; + string beginTime = Convert.ToDateTime(dtpOpeTime.Value).ToString("yyyy-MM-dd 00:00:00"); + string endTime = Convert.ToDateTime(dtpEnd.Value).ToString("yyyy-MM-dd 23:59:59"); + string sql = string.Format(" ExecTime>='{0}' and ExecTime<'{1}'", beginTime, endTime); + if (comboBoxExType.SelectedItem != null) + { + ComboItem chargitem = comboBoxExType.SelectedItem as ComboItem; + sql += " and (FeeTypeId = '" + chargitem.Value + "' ) "; + } + if (cnoDrugName.SelectedItem != null) + { + ComboItem chargitem = cnoDrugName.SelectedItem as ComboItem; + sql += " and (ChargName = '" + chargitem.Value + "' ) "; + } + if (FeeType != "") + { + sql += " and (FeeType = '" + FeeType + "' ) "; + } + BFeesRecordReport.UpdateChargcyl(sql); + btnOK_Click(null, null); + } } } diff --git a/AIMS/OperationAfter/frmOperationCharg3.designer.cs b/AIMS/OperationAfter/frmOperationCharg3.designer.cs index 4165f59..87541c6 100644 --- a/AIMS/OperationAfter/frmOperationCharg3.designer.cs +++ b/AIMS/OperationAfter/frmOperationCharg3.designer.cs @@ -28,16 +28,18 @@ /// private void InitializeComponent() { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle21 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); this.panel1 = new System.Windows.Forms.Panel(); this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); this.cboRoom = new DevComponents.DotNetBar.Controls.ComboBoxEx(); this.label22 = new System.Windows.Forms.Label(); this.tsbSettingDGV = new System.Windows.Forms.Button(); @@ -101,7 +103,7 @@ this.dataGridViewTextBoxColumn31 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvDrugs = new DevComponents.DotNetBar.Controls.DataGridViewX(); this.dataGridViewTextBoxColumn21 = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); this.panel1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.panel2.SuspendLayout(); @@ -134,13 +136,26 @@ this.toolStrip1.ImageScalingSize = new System.Drawing.Size(25, 25); this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripButton2, - this.toolStripButton1}); + this.toolStripButton1, + this.toolStripButton3, + this.toolStripButton4}); this.toolStrip1.Location = new System.Drawing.Point(0, 0); this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Size = new System.Drawing.Size(1350, 49); this.toolStrip1.TabIndex = 36; this.toolStrip1.Text = "toolStrip1"; // + // toolStripButton2 + // + this.toolStripButton2.Font = new System.Drawing.Font("微软雅黑", 9F); + this.toolStripButton2.Image = global::AIMS.Properties.Resources.图标_设置; + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(60, 46); + this.toolStripButton2.Text = "导出设置"; + this.toolStripButton2.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); + // // toolStripButton1 // this.toolStripButton1.Font = new System.Drawing.Font("微软雅黑", 9F); @@ -152,6 +167,17 @@ this.toolStripButton1.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; this.toolStripButton1.Click += new System.EventHandler(this.button1_Click); // + // toolStripButton3 + // + this.toolStripButton3.Font = new System.Drawing.Font("微软雅黑", 9F); + this.toolStripButton3.Image = global::AIMS.Properties.Resources.图标_手术排程; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(65, 46); + this.toolStripButton3.Text = "打印Excel"; + this.toolStripButton3.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // // cboRoom // this.cboRoom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -490,19 +516,19 @@ // dgvOperation // this.dgvOperation.AllowUserToAddRows = false; - dataGridViewCellStyle15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(247)))), ((int)(((byte)(255))))); - this.dgvOperation.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle15; + dataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(247)))), ((int)(((byte)(255))))); + this.dgvOperation.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle8; this.dgvOperation.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.dgvOperation.BackgroundColor = System.Drawing.Color.Snow; this.dgvOperation.BorderStyle = System.Windows.Forms.BorderStyle.None; - dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle16.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle16.Font = new System.Drawing.Font("微软雅黑", 10F); - dataGridViewCellStyle16.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle16.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle16.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dgvOperation.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle16; + dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle9.Font = new System.Drawing.Font("微软雅黑", 10F); + dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvOperation.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle9; this.dgvOperation.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvOperation.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Id, @@ -833,29 +859,29 @@ this.dgvDrugs.AllowUserToAddRows = false; this.dgvDrugs.AllowUserToResizeColumns = false; this.dgvDrugs.AllowUserToResizeRows = false; - dataGridViewCellStyle17.BackColor = System.Drawing.Color.MintCream; - this.dgvDrugs.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle17; + dataGridViewCellStyle10.BackColor = System.Drawing.Color.MintCream; + this.dgvDrugs.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle10; this.dgvDrugs.BackgroundColor = System.Drawing.Color.White; this.dgvDrugs.BorderStyle = System.Windows.Forms.BorderStyle.None; - dataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle18.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle18.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle18.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle18.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle18.SelectionForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dgvDrugs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle18; + dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle11.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle11.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle11.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle11.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle11.SelectionForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvDrugs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle11; this.dgvDrugs.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvDrugs.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.dataGridViewTextBoxColumn21}); - dataGridViewCellStyle20.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle20.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle20.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle20.ForeColor = System.Drawing.Color.Black; - dataGridViewCellStyle20.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle20.SelectionForeColor = System.Drawing.Color.Black; - dataGridViewCellStyle20.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgvDrugs.DefaultCellStyle = dataGridViewCellStyle20; + dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle13.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle13.ForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle13.SelectionForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvDrugs.DefaultCellStyle = dataGridViewCellStyle13; this.dgvDrugs.Dock = System.Windows.Forms.DockStyle.Fill; this.dgvDrugs.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; this.dgvDrugs.EnableHeadersVisualStyles = false; @@ -864,14 +890,14 @@ this.dgvDrugs.Margin = new System.Windows.Forms.Padding(0); this.dgvDrugs.MultiSelect = false; this.dgvDrugs.Name = "dgvDrugs"; - dataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle21.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle21.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle21.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle21.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle21.SelectionForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle21.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dgvDrugs.RowHeadersDefaultCellStyle = dataGridViewCellStyle21; + dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle14.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvDrugs.RowHeadersDefaultCellStyle = dataGridViewCellStyle14; this.dgvDrugs.RowHeadersVisible = false; this.dgvDrugs.RowTemplate.Height = 25; this.dgvDrugs.ShowCellErrors = false; @@ -884,23 +910,24 @@ // dataGridViewTextBoxColumn21 // this.dataGridViewTextBoxColumn21.DataPropertyName = "id"; - dataGridViewCellStyle19.ForeColor = System.Drawing.Color.Red; - this.dataGridViewTextBoxColumn21.DefaultCellStyle = dataGridViewCellStyle19; + dataGridViewCellStyle12.ForeColor = System.Drawing.Color.Red; + this.dataGridViewTextBoxColumn21.DefaultCellStyle = dataGridViewCellStyle12; this.dataGridViewTextBoxColumn21.HeaderText = "ID"; this.dataGridViewTextBoxColumn21.Name = "dataGridViewTextBoxColumn21"; this.dataGridViewTextBoxColumn21.Visible = false; this.dataGridViewTextBoxColumn21.Width = 30; // - // toolStripButton2 + // toolStripButton4 // - this.toolStripButton2.Font = new System.Drawing.Font("微软雅黑", 9F); - this.toolStripButton2.Image = global::AIMS.Properties.Resources.图标_设置; - this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton2.Name = "toolStripButton2"; - this.toolStripButton2.Size = new System.Drawing.Size(60, 46); - this.toolStripButton2.Text = "导出设置"; - this.toolStripButton2.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; - this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); + this.toolStripButton4.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton4.Font = new System.Drawing.Font("微软雅黑", 9F); + this.toolStripButton4.Image = global::AIMS.Properties.Resources.图标_刷新; + this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton4.Name = "toolStripButton4"; + this.toolStripButton4.Size = new System.Drawing.Size(72, 46); + this.toolStripButton4.Text = "更新残余量"; + this.toolStripButton4.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); // // frmOperationCharg3 // @@ -1001,5 +1028,7 @@ private System.Windows.Forms.ToolStrip toolStrip1; private System.Windows.Forms.ToolStripButton toolStripButton1; private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripButton toolStripButton4; } } \ No newline at end of file diff --git a/AIMS/OperationAfter/frmOperationCharg5.cs b/AIMS/OperationAfter/frmOperationCharg5.cs index 6c81026..bd4a1bd 100644 --- a/AIMS/OperationAfter/frmOperationCharg5.cs +++ b/AIMS/OperationAfter/frmOperationCharg5.cs @@ -38,10 +38,10 @@ namespace AIMS.OperationAfter.UI try { dtpOpeTime.Value = DateTime.Now; - dtpEnd.Value = dtpOpeTime.Value; + dtpEnd.Value = dtpOpeTime.Value; DataGridViewPath = GetControlPath(dgvDrugs); exportConfig = BSysConfig.SelectSingle(" Note='" + DataGridViewPath + "'", null, RecursiveType.None, 0); - + if (exportConfig != null) ConfigDataGridView(exportConfig); @@ -55,7 +55,7 @@ namespace AIMS.OperationAfter.UI PublicMethod.WriteLog(exp); } } - + private void btnOK_Click(object sender, EventArgs e) { //if (comboBoxExType.Text == "") return; @@ -136,7 +136,7 @@ namespace AIMS.OperationAfter.UI } private void button1_Click(object sender, EventArgs e) - { + { KillAllExcel(); ExprotExcel2(); } @@ -144,7 +144,7 @@ namespace AIMS.OperationAfter.UI private void ExprotExcel2(bool isPrint = false) { //自定义表头 - string title = "麻醉、精一药品注射剂使用、及残余液处理登记表"; + string title = "麻醉、精一药品注射剂使用、及残余液处理登记表"; //是否横向 bool xlLandscape = true; @@ -168,7 +168,7 @@ namespace AIMS.OperationAfter.UI myExcel.Visible = true; myExcel.Cells[1, 1] = title;//默认的就是在sheet1里面的。 - string DrugName = "科室:麻醉科"; + string DrugName = "科室:麻醉科"; myExcel.Cells[2, 1] = DrugName;//默认的就是在sheet1里面的。 int startIndex = 3; @@ -327,11 +327,11 @@ namespace AIMS.OperationAfter.UI item.Value = table.Rows[i][0].ToString(); cnoDrugName.Items.Add(item); } - } + } private void btnSave_Click(object sender, EventArgs e) { if (comboBoxExType.Text == "") return; - if (cnoDrugName.Text == "") return; + if (cnoDrugName.Text == "") return; foreach (DataGridViewRow item in dgvDrugs.Rows) { string feerid = item.Cells[0].EditedFormattedValue.ToString(); @@ -343,7 +343,7 @@ namespace AIMS.OperationAfter.UI //report.LimitDrug = item.Cells[2].EditedFormattedValue.ToString(); BFeesRecord.Update(report); } - MessageBox.Show("保存成功!", "系统提示"); + MessageBox.Show("保存成功!", "系统提示"); } private void dgvDrugs_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) @@ -352,7 +352,7 @@ namespace AIMS.OperationAfter.UI this.dgvDrugs.RowsDefaultCellStyle.BackColor = Color.White;//设置背景为白色 this.dgvDrugs.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(212)))), ((int)(((byte)(222)))), (((int)(((byte)242)))));//青色 } - + private void dgvDrugs_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { DialogResult dialog = MessageBox.Show("是否批量填写数据?", "系统提示", MessageBoxButtons.YesNo); @@ -376,5 +376,205 @@ namespace AIMS.OperationAfter.UI } } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + KillAllExcel(); + if (dgvDrugs.Rows.Count <= 0) return; + List groupedList = new List(); + foreach (DataGridViewRow item in dgvDrugs.Rows) + { + groupedList.Add(item); + } + int n = 21; + List> groupedLists = new List>(); + for (int i = 0; i < groupedList.Count; i += n) + { + List group = groupedList.GetRange(i, Math.Min(n, groupedList.Count - i)); + groupedLists.Add(group); + } + + foreach (List item in groupedLists) + { + ExprotExcel3(item, true); + } + } + + private void ExprotExcel3(List itemlist, bool isPrint = false) + { + //自定义表头 + string title = "麻醉、精一药品注射剂使用、及残余液处理登记表"; + + //是否横向 + bool xlLandscape = true; + if (dataGridViewSetting != null && dataGridViewSetting.Landscape == false) xlLandscape = false; + //主体字体大小 + int BodySize = 9; + if (dataGridViewSetting != null && dataGridViewSetting.FontSize > 0) BodySize = dataGridViewSetting.FontSize; + + myExcel = new Microsoft.Office.Interop.Excel.Application(); + this.Cursor = Cursors.WaitCursor; + //保存文化环境 + System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture; + System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); + + Workbook workbookData = myExcel.Workbooks.Add(Missing.Value); + Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)workbookData.Worksheets[1]; + + xlSheet.Name = title; + + if (isPrint == false) + myExcel.Visible = true; + + myExcel.Cells[1, 1] = title;//默认的就是在sheet1里面的。 + string DrugName = "科室:麻醉科"; + myExcel.Cells[2, 1] = DrugName;//默认的就是在sheet1里面的。 + int startIndex = 3; + + WorksheetClass wsClass = new WorksheetClass(); + + Dictionary Columns = new Dictionary(); + //填充标题 + for (int i = 0; i < dgvDrugs.Columns.Count; i++) + { + if (dataGridViewSetting != null) + { + foreach (var item in dataGridViewSetting.Exports) + { + if (dgvDrugs.Columns[i].Name == item.Name) + { + if (item.IsPrint == true) + { + Columns.Add(i, dgvDrugs.Columns[i].HeaderText); + continue; + } + + } + } + } + else + { + if (dgvDrugs.Columns[i].Visible == true) + Columns.Add(i, dgvDrugs.Columns[i].HeaderText); + } + } + + List> ColumnsStr = Columns.ToList(); + + for (int i = 0; i < ColumnsStr.Count; i++) + { + myExcel.Cells[startIndex, i + 1] = ColumnsStr[i].Value; + if (dataGridViewSetting != null) + { + foreach (var item in dataGridViewSetting.Exports) + { + if (ColumnsStr[i].Value == item.Text) + { + xlSheet.get_Range(xlSheet.Cells[startIndex, i + 1], xlSheet.Cells[startIndex, i + 1]).ColumnWidth = item.PrintWidth;//列宽 + } + } + } + else + { + xlSheet.get_Range(xlSheet.Cells[startIndex, i + 1], xlSheet.Cells[startIndex, i + 1]).ColumnWidth = 5;//列宽 + } + } + //获得数据表的值 + int RowCount = itemlist.Count; + int colCount = ColumnsStr.Count; + //设置填充单元格样式 + xlSheet.get_Range(xlSheet.Cells[startIndex, 1], xlSheet.Cells[RowCount + startIndex, colCount]).Borders.LineStyle = XlLineStyle.xlContinuous;//边框的样式 + object[,] objData = new object[RowCount, colCount]; + + //将DataTable里的值填充到对象数组中 + for (int i = 0; i < RowCount; i++) + { + for (int j = 0; j < colCount; j++) + { + if (dgvDrugs.Columns[ColumnsStr[j].Key].Name == "序号" || dgvDrugs.Columns[ColumnsStr[j].Key].Name == "ApplyId") + objData[i, j] = i + 1; + else if (itemlist[i].Cells[ColumnsStr[j].Key].Value != null) + objData[i, j] = itemlist[i].Cells[ColumnsStr[j].Key].Value.ToString().Trim(); + } + System.Windows.Forms.Application.DoEvents(); + } + + //将对象数组的值赋值给Excel + Range range = xlSheet.get_Range(xlSheet.Cells[4, 1], xlSheet.Cells[RowCount + startIndex, colCount]); + range.NumberFormat = "@"; + range.Value2 = objData; + range.RowHeight = 19; + //xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[RowCount + 2, colCount]).Font.Size = BodySize;//字体大小 + + //设置主标题单元格的样式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).MergeCells = true;//合并单元格 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平对齐方式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直对齐方式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.Bold = true;//字体加粗 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.ColorIndex = 0;//字体颜色 + //xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.Italic = true;//是否斜体 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).Font.Size = 20;//字体大小 + //xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[2, colCount]).Borders.LineStyle = XlLineStyle.xlContinuous;//边框样式 + xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, colCount]).RowHeight = 33.75;//行高 + + xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[2, colCount]).MergeCells = true;//合并单元格 + + //设置标题单元格样式 + xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[startIndex, colCount]).RowHeight = 21;//行高 + + if (xlLandscape == true) + xlSheet.PageSetup.Orientation = XlPageOrientation.xlLandscape;//页面方向为横向 + //复苏文化环境 + System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; + try + { + if (isPrint == true) + xlSheet.PrintOutEx(); + //myExcel.Save(@"D:a.xls"); + //myExcel.Quit(); + this.Cursor = Cursors.Default; + //MessageBox.Show("导出成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + } + finally + { + if (isPrint == true) + { + //释放资源 + System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); + System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookData); + System.Runtime.InteropServices.Marshal.ReleaseComObject(range); + System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel); + GC.Collect(); + range = null; + xlSheet = null; + workbookData = null; + myExcel = null; + KillAllExcel(); + } + } + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + string beginTime = Convert.ToDateTime(dtpOpeTime.Value).ToString("yyyy-MM-dd 00:00:00"); + string endTime = Convert.ToDateTime(dtpEnd.Value).ToString("yyyy-MM-dd 23:59:59"); + string sql = string.Format(" ExecTime>='{0}' and ExecTime<'{1}'", beginTime, endTime); + if (comboBoxExType.SelectedItem != null) + { + ComboItem chargitem = comboBoxExType.SelectedItem as ComboItem; + sql += " and (FeeTypeId = '" + chargitem.Value + "' ) "; + } + if (cnoDrugName.SelectedItem != null) + { + ComboItem chargitem = cnoDrugName.SelectedItem as ComboItem; + sql += " and (ChargName = '" + chargitem.Value + "' ) "; + } + if (FeeType != "") + { + sql += " and (FeeType = '" + FeeType + "' ) "; + } + BFeesRecordReport.UpdateChargcyl(sql); + btnOK_Click(null, null); + } } } diff --git a/AIMS/OperationAfter/frmOperationCharg5.designer.cs b/AIMS/OperationAfter/frmOperationCharg5.designer.cs index dff8b7c..b035713 100644 --- a/AIMS/OperationAfter/frmOperationCharg5.designer.cs +++ b/AIMS/OperationAfter/frmOperationCharg5.designer.cs @@ -37,6 +37,7 @@ this.toolStrip1 = new System.Windows.Forms.ToolStrip(); this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); this.cboRoom = new DevComponents.DotNetBar.Controls.ComboBoxEx(); this.label22 = new System.Windows.Forms.Label(); this.tsbSettingDGV = new System.Windows.Forms.Button(); @@ -90,6 +91,7 @@ this.dataGridViewTextBoxColumn31 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvDrugs = new DevComponents.DotNetBar.Controls.DataGridViewX(); this.dataGridViewTextBoxColumn21 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); this.panel1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.panel2.SuspendLayout(); @@ -120,7 +122,9 @@ this.toolStrip1.ImageScalingSize = new System.Drawing.Size(25, 25); this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripButton2, - this.toolStripButton1}); + this.toolStripButton1, + this.toolStripButton3, + this.toolStripButton4}); this.toolStrip1.Location = new System.Drawing.Point(0, 0); this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Size = new System.Drawing.Size(1350, 49); @@ -149,6 +153,17 @@ this.toolStripButton1.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; this.toolStripButton1.Click += new System.EventHandler(this.button1_Click); // + // toolStripButton3 + // + this.toolStripButton3.Font = new System.Drawing.Font("微软雅黑", 9F); + this.toolStripButton3.Image = global::AIMS.Properties.Resources.图标_手术排程; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(65, 46); + this.toolStripButton3.Text = "打印Excel"; + this.toolStripButton3.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // // cboRoom // this.cboRoom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -762,6 +777,18 @@ this.dataGridViewTextBoxColumn21.Visible = false; this.dataGridViewTextBoxColumn21.Width = 30; // + // toolStripButton4 + // + this.toolStripButton4.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton4.Font = new System.Drawing.Font("微软雅黑", 9F); + this.toolStripButton4.Image = global::AIMS.Properties.Resources.图标_刷新; + this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton4.Name = "toolStripButton4"; + this.toolStripButton4.Size = new System.Drawing.Size(72, 46); + this.toolStripButton4.Text = "更新残余量"; + this.toolStripButton4.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); + // // frmOperationCharg5 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -848,5 +875,7 @@ private System.Windows.Forms.ToolStrip toolStrip1; private System.Windows.Forms.ToolStripButton toolStripButton1; private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripButton toolStripButton4; } } \ No newline at end of file diff --git a/AIMSEntity/BLL/Extension/BFeesRecordReport.cs b/AIMSEntity/BLL/Extension/BFeesRecordReport.cs index bc134e1..5372876 100644 --- a/AIMSEntity/BLL/Extension/BFeesRecordReport.cs +++ b/AIMSEntity/BLL/Extension/BFeesRecordReport.cs @@ -101,5 +101,23 @@ LEFT JOIN V_OperationRecordInfo voi on voi.RecoredId=FeesRecord.OperationRecordI DataTable dt = DBHelper.GetDataTable(sql); return dt; } + public static void UpdateChargcyl(string where) + { + string sql = string.Format(@" + Update [FeesRecord] set IsInsure=(select convert(nvarchar(10),(num*Qty)-Qty2 )+ unitt from ( +SELECT fr.Id + ,[FeeNum] num + ,[Extend1] unitt + , CASE WHEN ISNUMERIC( fr.[Extend2] )=1 AND fr.[Extend2] not LIKE '%[^0-9.]%' + THEN CAST( fr.[Extend2] AS DECIMAL(19,6)) + ELSE 0.0 END AS Qty2 + , CASE WHEN ISNUMERIC(Drugs.Dosage )=1 AND Drugs.Dosage not LIKE '%[^0-9.]%' + THEN CAST( Drugs.Dosage AS DECIMAL(19,6)) + ELSE 0.0 END AS Qty + FROM [dbo].[FeesRecord] fr + left join Drugs on fr.FeeId =Drugs.Id where fr.Id= [FeesRecord].Id) temp) + where FeeIsDrug=1 and FeesRecord.Extend4<>'' and {0}", where); + DBHelper.ExecuteScalar(sql); + } } } diff --git a/DrawGraphManagement/AreaManageForm.Designer.cs b/DrawGraphManagement/AreaManageForm.Designer.cs index e364e0d..0347066 100644 --- a/DrawGraphManagement/AreaManageForm.Designer.cs +++ b/DrawGraphManagement/AreaManageForm.Designer.cs @@ -72,7 +72,7 @@ this.txtInstanceName = new System.Windows.Forms.ComboBox(); this.panel3 = new System.Windows.Forms.Panel(); this.panel4 = new System.Windows.Forms.Panel(); - this.panelzgc = new DrawGraphManagement.MyPanel(); + this.panelzgc = new System.Windows.Forms.Panel(); this.alignCmdOfPackPnl = new System.Windows.Forms.Panel(); this.btnAlignCmd = new System.Windows.Forms.Button(); this.cmbPackAlignType = new System.Windows.Forms.ComboBox(); @@ -1086,7 +1086,7 @@ private System.Windows.Forms.TreeView treeView1; private System.Windows.Forms.Panel panel3; private System.Windows.Forms.Panel panel4; - private MyPanel panelzgc; + private System.Windows.Forms.Panel panelzgc; public DrawGraph.ZedGraphControl zedGraphControl1; private System.Windows.Forms.ColorDialog colorDialog1; private System.Windows.Forms.MenuStrip menuStrip1; diff --git a/DrawGraphManagement/DrawGraphManagement.csproj b/DrawGraphManagement/DrawGraphManagement.csproj index bba5ec4..4ea416c 100644 --- a/DrawGraphManagement/DrawGraphManagement.csproj +++ b/DrawGraphManagement/DrawGraphManagement.csproj @@ -77,8 +77,16 @@ False ..\AIMS\Extensions\Newtonsoft.Json.dll + + False + .\PdfiumViewer.dll + False + + + + @@ -87,6 +95,7 @@ + @@ -102,18 +111,18 @@ frmTemplateD.cs + + Form + + + MainUp.cs + Form Main.cs - - Component - - - MyPanel.cs - Form @@ -124,6 +133,7 @@ + @@ -132,12 +142,12 @@ frmTemplateD.cs + + MainUp.cs + Main.cs - - MyPanel.cs - ConvertModeForm.cs @@ -151,6 +161,7 @@ Resources.resx True + SettingsSingleFileGenerator Settings.Designer.cs @@ -166,6 +177,9 @@ Always + + Always + diff --git a/DrawGraphManagement/Main.Designer.cs b/DrawGraphManagement/Main.Designer.cs index 0b88ee7..6c1e44f 100644 --- a/DrawGraphManagement/Main.Designer.cs +++ b/DrawGraphManagement/Main.Designer.cs @@ -72,9 +72,8 @@ this.label5 = new System.Windows.Forms.Label(); this.txtAreaX = new System.Windows.Forms.TextBox(); this.label4 = new System.Windows.Forms.Label(); - this.myPanel1 = new DrawGraphManagement.MyPanel(); + this.myPanel1 = new System.Windows.Forms.Panel(); this.zedGraphMain = new DrawGraph.ZedGraphControl(); - this.btnPrint = new System.Windows.Forms.Button(); this.panel1.SuspendLayout(); this.panel4.SuspendLayout(); this.pnlManageList.SuspendLayout(); @@ -179,7 +178,6 @@ this.panel4.Controls.Add(this.button10); this.panel4.Controls.Add(this.button2); this.panel4.Controls.Add(this.btnCreate); - this.panel4.Controls.Add(this.btnPrint); this.panel4.Controls.Add(this.btnSave); this.panel4.Dock = System.Windows.Forms.DockStyle.Bottom; this.panel4.Location = new System.Drawing.Point(0, 4); @@ -545,16 +543,6 @@ this.zedGraphMain.KeyUp += new System.Windows.Forms.KeyEventHandler(this.zedGraphMain_KeyUp); this.zedGraphMain.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.zedGraphMain_MouseDoubleClick); // - // btnPrint - // - this.btnPrint.Location = new System.Drawing.Point(1067, 7); - this.btnPrint.Name = "btnPrint"; - this.btnPrint.Size = new System.Drawing.Size(59, 23); - this.btnPrint.TabIndex = 5; - this.btnPrint.Text = "打印"; - this.btnPrint.UseVisualStyleBackColor = true; - this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); - // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -609,7 +597,7 @@ private System.Windows.Forms.Button BtnBind; private System.Windows.Forms.Label label6; private System.Windows.Forms.TextBox textBox1; - private MyPanel myPanel1; + private System.Windows.Forms.Panel myPanel1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Label label7; private System.Windows.Forms.TextBox txtHospitalName; @@ -629,6 +617,5 @@ private System.Windows.Forms.Button button10; private System.Windows.Forms.Button button11; private System.Windows.Forms.Button button12; - private System.Windows.Forms.Button btnPrint; } } \ No newline at end of file diff --git a/DrawGraphManagement/Main.cs b/DrawGraphManagement/Main.cs index 399bf77..ff7dbbf 100644 --- a/DrawGraphManagement/Main.cs +++ b/DrawGraphManagement/Main.cs @@ -815,174 +815,6 @@ namespace DrawGraphManagement } } - - private void btnPrint_Click(object sender, EventArgs e) - { - if (textBox1.Text == "") return; - try - { - mPanes = new List(); - UpPanes = new List(); - - PrintDocPage(null, null); - - count = 0; - int pylWidth = 3; - System.Drawing.Printing.PrintDocument pDoc = new System.Drawing.Printing.PrintDocument(); - pDoc.DefaultPageSettings.Landscape = false; - pDoc.OriginAtMargins = true; - pDoc.DefaultPageSettings.PrinterResolution.Kind = PrinterResolutionKind.High; - pDoc.DefaultPageSettings.Margins = new Margins(pylWidth, 0, 0, 0); - pDoc.PrintPage -= new PrintPageEventHandler(pDoc_PrintPage); - pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage); - - System.Windows.Forms.PrintDialog pDlg = new System.Windows.Forms.PrintDialog(); - pDlg.Document = pDoc; - if (pDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) - { - pDoc.Print(); - } - count = 0; - } - catch (Exception exp) - { - PublicMethod.WriteLog(exp, ""); - } - } - public List mPanes = new List(); - public List UpPanes = new List(); - int m_startPrintPage;// 打印的起始页码 - int m_endPrintPage;//打印的终止页码 - int count = 0; - private void pDoc_PrintPage(object sender, PrintPageEventArgs e) - { - System.Drawing.Printing.PrintDocument pDoc = sender as System.Drawing.Printing.PrintDocument; - m_startPrintPage = pDoc.PrinterSettings.FromPage; - m_endPrintPage = pDoc.PrinterSettings.ToPage; - - int printCount = mPanes.Count; - if (mPanes.Count > 0 && count < printCount) - { - mPanes[count].Draw(e.Graphics); - count++; - if (count < printCount) - { - e.HasMorePages = true; - } - } - else - { - e.HasMorePages = false; - } - } - private void PrintDocPage(object sender, PrintPageEventArgs e) - { - OperationRecord _record = operationRecor as OperationRecord; - if (_record.currentPage == 1) - { - PrintDocPane(e, zedGraphMain, templateManage, true); - //PrintDocPane(e, zgcAnaesRecord2, templateManage2, false); - } - //else - //{ - // for (int i = 1; i <= _record.pageCount; i++) - // { - // PrintDocPane(e, zgcAnaesRecord, templateManage, true); - // if (i == 1) - // { - // PrintDocPane(e, zgcAnaesRecord2, templateManage2, false); - // } - // btnNextPage_Click(null, null); - // if (i != 1) - // { - // MasterPane mPane = new MasterPane(); - // mPane.Border.IsVisible = false; - // mPanes.Add(mPane); - // } - // } - //} - - } - - - private void PrintDocPane(PrintPageEventArgs e, ZedGraphControl zedGraph, TemplateManage template, bool InitChart) - { - OperationRecord _record = operationRecor as OperationRecord; - foreach (AreaManageBase area in template.ManageList) - { - area.setPrint(false); - area.BindTempData(); - } - int zedGraphMainWidth = zedGraph.Size.Width; - int zedGraphMainHeight = zedGraph.Size.Height; - - int width = 825; - int height = Convert.ToInt32(width * 1.414) + 2; - zedGraph.Size = new Size(width, height); - zedGraph.Width = width; - zedGraph.Height = height; - - if (InitChart == true) - foreach (PhysioDataConfig pp in _record.PhysioConfigList) - { - if (pp.ShowText == true) - { - pp.IsValid = false; - ///重新设置曲线属性 - pp.reSetCurveSpo2(); - } - } - TipBox.Hidden(); - - MasterPane mPane = zedGraph.MasterPane; //this.MasterPane; - mPane.Border.IsVisible = false; - //当前窗体中的矩形区域大小 - RectangleF saveRect = mPane.Rect; - if (InitChart == true) - template.initChart(); - mPanes.Add(mPane.Clone()); - if (e != null) - mPane.Draw(e.Graphics); //在打印文档中画出MasterPane内容 - using (Graphics g = zedGraph.CreateGraphics()) - { - mPane.ReSize(g, saveRect); - } - - zedGraph.Size = new Size(zedGraphMainWidth, zedGraphMainHeight); - if (InitChart == true) - template.initChart(); - UpPanes.Add(mPane.Clone()); - - if (InitChart == true) - foreach (PhysioDataConfig pp in _record.PhysioConfigList) - { - if (pp.ShowText == true) - { - pp.IsValid = true; - ///重新设置曲线属性 - pp.reSetCurveSpo2(); - } - } - //if (InitChart == false) - //{ - // int LocationY = Convert.ToInt32(templateManage2.ZedControl.Height * 0.065); - // templateManage2.LocationY = LocationY; - // templateManage2.SetPYL(); - // foreach (AreaManageBase area in template.ManageList) - // { - // area.setPrint(true); - // } - //} - //else - //{ - int LocationY = Convert.ToInt32(templateManage.ZedControl.Height * 0.04); - templateManage.LocationY = LocationY; - templateManage.SetPYL(); - foreach (AreaManageBase area in template.ManageList) - { - area.setPrint(true); - } - //} - } + } } diff --git a/DrawGraphManagement/MainUp.Designer.cs b/DrawGraphManagement/MainUp.Designer.cs new file mode 100644 index 0000000..82933a8 --- /dev/null +++ b/DrawGraphManagement/MainUp.Designer.cs @@ -0,0 +1,440 @@ +namespace DrawGraphManagement +{ + partial class MainUp + { + /// + /// 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.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainUp)); + this.cmbManageList = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.txtManageName = new System.Windows.Forms.TextBox(); + this.btnCreate = new System.Windows.Forms.Button(); + this.btnSave = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button11 = new System.Windows.Forms.Button(); + this.BtnBind = new System.Windows.Forms.Button(); + this.label6 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button9 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button12 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.btnPrint = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.txtProjectName = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.txtHospitalName = new System.Windows.Forms.TextBox(); + this.myPanel1 = new System.Windows.Forms.Panel(); + this.zgcAnaesRecord2 = new DrawGraph.ZedGraphControl(); + this.zgcAnaesRecord = new DrawGraph.ZedGraphControl(); + this.panel1.SuspendLayout(); + this.panel4.SuspendLayout(); + this.myPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // cmbManageList + // + this.cmbManageList.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.cmbManageList.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; + this.cmbManageList.FormattingEnabled = true; + this.cmbManageList.Location = new System.Drawing.Point(771, 10); + this.cmbManageList.Name = "cmbManageList"; + this.cmbManageList.Size = new System.Drawing.Size(155, 20); + this.cmbManageList.TabIndex = 0; + this.cmbManageList.Visible = false; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(664, 14); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(101, 12); + this.label1.TabIndex = 1; + this.label1.Text = "区域管理器类型:"; + this.label1.Visible = false; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(932, 14); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(101, 12); + this.label2.TabIndex = 2; + this.label2.Text = "区域管理器名称:"; + this.label2.Visible = false; + // + // txtManageName + // + this.txtManageName.Location = new System.Drawing.Point(1039, 10); + this.txtManageName.Name = "txtManageName"; + this.txtManageName.Size = new System.Drawing.Size(180, 21); + this.txtManageName.TabIndex = 3; + this.txtManageName.Visible = false; + // + // btnCreate + // + this.btnCreate.Location = new System.Drawing.Point(1302, 8); + this.btnCreate.Name = "btnCreate"; + this.btnCreate.Size = new System.Drawing.Size(75, 23); + this.btnCreate.TabIndex = 4; + this.btnCreate.Text = "新建"; + this.btnCreate.UseVisualStyleBackColor = true; + this.btnCreate.Visible = false; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(895, 7); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(75, 23); + this.btnSave.TabIndex = 5; + this.btnSave.Text = "保存"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.panel4); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.txtProjectName); + this.panel1.Controls.Add(this.cmbManageList); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.txtManageName); + this.panel1.Controls.Add(this.label7); + this.panel1.Controls.Add(this.txtHospitalName); + 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(1350, 46); + this.panel1.TabIndex = 6; + // + // panel4 + // + this.panel4.Controls.Add(this.button5); + this.panel4.Controls.Add(this.button4); + this.panel4.Controls.Add(this.button11); + this.panel4.Controls.Add(this.BtnBind); + this.panel4.Controls.Add(this.label6); + this.panel4.Controls.Add(this.textBox1); + this.panel4.Controls.Add(this.button9); + this.panel4.Controls.Add(this.button8); + this.panel4.Controls.Add(this.button12); + this.panel4.Controls.Add(this.button7); + this.panel4.Controls.Add(this.button6); + this.panel4.Controls.Add(this.button10); + this.panel4.Controls.Add(this.button2); + this.panel4.Controls.Add(this.btnCreate); + this.panel4.Controls.Add(this.btnPrint); + this.panel4.Controls.Add(this.btnSave); + this.panel4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel4.Location = new System.Drawing.Point(0, 4); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(1350, 42); + this.panel4.TabIndex = 9; + // + // button5 + // + this.button5.Location = new System.Drawing.Point(1394, 15); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(75, 23); + this.button5.TabIndex = 16; + this.button5.Text = "清空"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Visible = false; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button4 + // + this.button4.Location = new System.Drawing.Point(1313, 15); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(75, 23); + this.button4.TabIndex = 15; + this.button4.Text = "默认"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Visible = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button11 + // + this.button11.Location = new System.Drawing.Point(981, 6); + this.button11.Name = "button11"; + this.button11.Size = new System.Drawing.Size(75, 23); + this.button11.TabIndex = 12; + this.button11.Text = "文书加载"; + this.button11.UseVisualStyleBackColor = true; + this.button11.Click += new System.EventHandler(this.button11_Click); + // + // BtnBind + // + this.BtnBind.Location = new System.Drawing.Point(809, 7); + this.BtnBind.Name = "BtnBind"; + this.BtnBind.Size = new System.Drawing.Size(75, 23); + this.BtnBind.TabIndex = 11; + this.BtnBind.Text = "加载数据"; + this.BtnBind.UseVisualStyleBackColor = true; + this.BtnBind.Click += new System.EventHandler(this.BtnBind_Click); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(20, 13); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 12); + this.label6.TabIndex = 9; + this.label6.Text = "患者ID:"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(81, 9); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(59, 21); + this.textBox1.TabIndex = 10; + this.textBox1.Text = "786"; + // + // button9 + // + this.button9.Location = new System.Drawing.Point(321, 7); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(107, 23); + this.button9.TabIndex = 6; + this.button9.Text = "麻醉记录单2背面"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // button8 + // + this.button8.Location = new System.Drawing.Point(609, 7); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(102, 23); + this.button8.TabIndex = 6; + this.button8.Text = "器械清点单背面"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button8_Click); + // + // button12 + // + this.button12.Location = new System.Drawing.Point(722, 7); + this.button12.Name = "button12"; + this.button12.Size = new System.Drawing.Size(76, 23); + this.button12.TabIndex = 6; + this.button12.Text = "镇静记录单"; + this.button12.UseVisualStyleBackColor = true; + this.button12.Click += new System.EventHandler(this.button12_Click); + // + // button7 + // + this.button7.Location = new System.Drawing.Point(523, 7); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(75, 23); + this.button7.TabIndex = 6; + this.button7.Text = "器械清点单"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button6 + // + this.button6.Location = new System.Drawing.Point(439, 7); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(73, 23); + this.button6.TabIndex = 6; + this.button6.Text = "恢复记录单"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button10 + // + this.button10.Location = new System.Drawing.Point(230, 7); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(80, 23); + this.button10.TabIndex = 6; + this.button10.Text = "麻醉记录单2"; + this.button10.UseVisualStyleBackColor = true; + this.button10.Click += new System.EventHandler(this.button10_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(146, 7); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(73, 23); + this.button2.TabIndex = 6; + this.button2.Text = "麻醉记录单"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // btnPrint + // + this.btnPrint.Location = new System.Drawing.Point(1067, 7); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(59, 23); + this.btnPrint.TabIndex = 5; + this.btnPrint.Text = "打印"; + this.btnPrint.UseVisualStyleBackColor = true; + this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(347, 14); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 12); + this.label3.TabIndex = 7; + this.label3.Text = "项目名称:"; + this.label3.Visible = false; + // + // txtProjectName + // + this.txtProjectName.Location = new System.Drawing.Point(418, 10); + this.txtProjectName.Name = "txtProjectName"; + this.txtProjectName.Size = new System.Drawing.Size(225, 21); + this.txtProjectName.TabIndex = 8; + this.txtProjectName.Visible = false; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(28, 14); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(65, 12); + this.label7.TabIndex = 10; + this.label7.Text = "医院名称:"; + // + // txtHospitalName + // + this.txtHospitalName.Location = new System.Drawing.Point(99, 10); + this.txtHospitalName.Name = "txtHospitalName"; + this.txtHospitalName.Size = new System.Drawing.Size(213, 21); + this.txtHospitalName.TabIndex = 11; + // + // myPanel1 + // + this.myPanel1.AutoScroll = true; + this.myPanel1.Controls.Add(this.zgcAnaesRecord2); + this.myPanel1.Controls.Add(this.zgcAnaesRecord); + this.myPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.myPanel1.Location = new System.Drawing.Point(0, 46); + this.myPanel1.Name = "myPanel1"; + this.myPanel1.Size = new System.Drawing.Size(1350, 683); + this.myPanel1.TabIndex = 10; + this.myPanel1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.myPanel1_Scroll); + // + // zgcAnaesRecord2 + // + this.zgcAnaesRecord2.Location = new System.Drawing.Point(266, -159); + this.zgcAnaesRecord2.Name = "zgcAnaesRecord2"; + this.zgcAnaesRecord2.ScrollGrace = 0D; + this.zgcAnaesRecord2.ScrollMaxX = 0D; + this.zgcAnaesRecord2.ScrollMaxY = 0D; + this.zgcAnaesRecord2.ScrollMaxY2 = 0D; + this.zgcAnaesRecord2.ScrollMinX = 0D; + this.zgcAnaesRecord2.ScrollMinY = 0D; + this.zgcAnaesRecord2.ScrollMinY2 = 0D; + this.zgcAnaesRecord2.Size = new System.Drawing.Size(800, 1000); + this.zgcAnaesRecord2.TabIndex = 2; + this.zgcAnaesRecord2.Visible = false; + // + // zgcAnaesRecord + // + this.zgcAnaesRecord.Location = new System.Drawing.Point(3, 3); + this.zgcAnaesRecord.Name = "zgcAnaesRecord"; + this.zgcAnaesRecord.ScrollGrace = 0D; + this.zgcAnaesRecord.ScrollMaxX = 0D; + this.zgcAnaesRecord.ScrollMaxY = 0D; + this.zgcAnaesRecord.ScrollMaxY2 = 0D; + this.zgcAnaesRecord.ScrollMinX = 0D; + this.zgcAnaesRecord.ScrollMinY = 0D; + this.zgcAnaesRecord.ScrollMinY2 = 0D; + this.zgcAnaesRecord.Size = new System.Drawing.Size(225, 304); + this.zgcAnaesRecord.TabIndex = 1; + this.zgcAnaesRecord.MouseDownEvent += new DrawGraph.ZedGraphControl.ZedMouseEventHandler(this.zgcAnaesRecord_MouseDownEvent); + this.zgcAnaesRecord.MouseUpEvent += new DrawGraph.ZedGraphControl.ZedMouseEventHandler(this.zgcAnaesRecord_MouseUpEvent); + this.zgcAnaesRecord.MouseMoveEvent += new DrawGraph.ZedGraphControl.ZedMouseEventHandler(this.zgcAnaesRecord_MouseMoveEvent); + this.zgcAnaesRecord.KeyUp += new System.Windows.Forms.KeyEventHandler(this.zgcAnaesRecord_KeyUp); + this.zgcAnaesRecord.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.zgcAnaesRecord_MouseDoubleClick); + // + // MainUp + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.ClientSize = new System.Drawing.Size(1350, 729); + this.Controls.Add(this.myPanel1); + this.Controls.Add(this.panel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "MainUp"; + this.Text = "记录单制作工具"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.Load += new System.EventHandler(this.MainUp_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.myPanel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ComboBox cmbManageList; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtManageName; + private System.Windows.Forms.Button btnCreate; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Panel panel1; + private DrawGraph.ZedGraphControl zgcAnaesRecord; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtProjectName; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Button BtnBind; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Panel myPanel1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox txtHospitalName; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button button11; + private System.Windows.Forms.Button button12; + private System.Windows.Forms.Button btnPrint; + private DrawGraph.ZedGraphControl zgcAnaesRecord2; + } +} \ No newline at end of file diff --git a/DrawGraphManagement/MainUp.cs b/DrawGraphManagement/MainUp.cs new file mode 100644 index 0000000..e36c814 --- /dev/null +++ b/DrawGraphManagement/MainUp.cs @@ -0,0 +1,866 @@ +using AIMSBLL; +using AIMSExtension; +using AIMSModel; +using DrawGraph; +using HelperDB; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data; +using System.Drawing; +using System.Drawing.Printing; +using System.IO; +using System.IO.Packaging; +using System.Linq; +using System.Reflection; +using System.Windows.Documents; +using System.Windows.Forms; +using System.Windows.Xps; +using System.Windows.Xps.Packaging; + +namespace DrawGraphManagement +{ + public partial class MainUp : Form + { + TemplateManage templateManage = new TemplateManage(); + TemplateManage templateManage2 = new TemplateManage(); + object operationRecor = new DrawGraph.OperationRecord(); + + public MainUp() + { + InitializeComponent(); + } + + private void MainUp_Load(object sender, EventArgs e) + { + HospitalInfo hospital = BHospitalInfo.SelectSingle(1); + txtHospitalName.Text = hospital.HospitalName; + Person PersonObj = BPerson.GetModelByNo("admin"); + AIMSExtension.PublicMethod.OperatorId = PersonObj.Id.Value; + AIMSExtension.PublicMethod.OperatorNo = PersonObj.No; + AIMSExtension.PublicMethod.OperatorName = PersonObj.Name; + AIMSExtension.PublicMethod.RoleId = PersonObj.RoleId.Value; + AIMSExtension.PublicMethod.DepId = PersonObj.DepId.Value; + AIMSExtension.PublicMethod.DeptName = BDepartment.GetModel(PersonObj.DepId.Value).Name; + Role role = BRole.GetModel(PersonObj.RoleId.Value); + AIMSExtension.PublicMethod.PermissionLevel = role.PermissionLevel == null ? 0 : role.PermissionLevel.Value; + AIMSExtension.PublicMethod.RoleName = BMenu.GetMenuRootListManageStr(AIMSExtension.PublicMethod.RoleId, "功能权限"); + myPanel1.MouseWheel += new System.Windows.Forms.MouseEventHandler(panel1_MouseWheel); + LoadManageList(); + + button10_Click(null, null); + BtnBind_Click(null, null); + } + /// + /// 加载管理器列表 + /// + private void LoadManageList() + { + Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "DrawGraph.dll");//你的loadfile + Type baseType = typeof(AreaManageBase); + List types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType)).ToList(); + List viewTypes = types.Where(s => s.FullName.IndexOf(".document.") < 0).ToList(); + List wsTypes = types.Where(s => s.FullName.IndexOf(".document.") >= 0).ToList(); + + cmbManageList.Items.Clear(); + foreach (Type t in viewTypes) + { + cmbManageList.Items.Add(t.Name); + } + cmbManageList.Items.Add("-------------------"); + foreach (Type t in wsTypes) + { + cmbManageList.Items.Add(t.Name); + } + } + + /// + /// 设置界面自适应 + /// + private void AutoSizeF() + { + #region 设置界面自适应 + if (templateManage.ZedControl == null) return; + + if (templateManage.Typesetting == TypesettingEnum.Horizontal) + { + //在此处可随时设置板子的属性 + templateManage.ZedControl.Height = templateManage.GetPageWidth(); + templateManage.ZedControl.Width = Convert.ToInt32(templateManage.ZedControl.Height * 1.414) + 2; + } + else + { + //在此处可随时设置板子的属性 + templateManage.ZedControl.Width = templateManage.GetPageWidth();// templateManage.ZedControl.Parent.Width - 54; + templateManage.ZedControl.Height = Convert.ToInt32(templateManage.ZedControl.Width * 1.414) + 2; + } + templateManage.ZedControl.AxisChange(); + templateManage.ZedControl.Refresh(); + //最后还要调整图表进行自适应 + PackObjBase pack = templateManage.GetPackObjectOTag("PhysioDataManage_ChartPackObj_6"); + if (pack != null) + pack.Draw(); + #endregion + } + + /// + /// 全部刷新 + /// + private void AllRefresh() + { + foreach (AreaManageBase area in templateManage.ManageList) + { + List ables = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList(); + foreach (PackObjBase pack in ables) + { + AbleEditPackObj ableEdit = pack as AbleEditPackObj; + if (ableEdit != null) ableEdit.IsVisible = false; + } + } + //画区域 + drawArea(); + } + + private void drawArea() + { + templateManage.ZedControl = zgcAnaesRecord; + templateManage.DrawArea(); + } + + private void AllRefresh2() + { + foreach (AreaManageBase area in templateManage2.ManageList) + { + List ables = area.PackManage.ListPob.Where(s => s is AbleEditPackObj).ToList(); + foreach (PackObjBase pack in ables) + { + AbleEditPackObj ableEdit = pack as AbleEditPackObj; + if (ableEdit != null) ableEdit.IsVisible = false; + } + } + //画区域 + drawArea2(); + } + + private void drawArea2() + { + templateManage2.ZedControl = zgcAnaesRecord2; + templateManage2.DrawArea(); + } + private void btnSave_Click(object sender, EventArgs e) + { + bool reVal = templateManage.Save(); + if (reVal) + { + new frmMessageBox().Show(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + } + + private bool zgcAnaesRecord_MouseDownEvent(ZedGraphControl sender, MouseEventArgs e) + { + if (templateManage != null) + { + templateManage.zedControl_MouseDownEvent(sender, e); + } + return default(bool); + } + + private bool zgcAnaesRecord_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e) + { + if (templateManage != null) + { + templateManage.zedControl_MouseMoveEvent(sender, e); + } + return default(bool); + } + + private bool zgcAnaesRecord_MouseUpEvent(ZedGraphControl sender, MouseEventArgs e) + { + if (templateManage != null) + { + templateManage.zedControl_MouseUpEvent(sender, e); + } + return default(bool); + } + + private void zgcAnaesRecord_MouseDoubleClick(object sender, MouseEventArgs e) + { + if (templateManage != null) + { + ZedGraphControl send = sender as ZedGraphControl; + templateManage.zedControl_MouseDoubleClick(send, e); + } + } + + private void zgcAnaesRecord_KeyUp(object sender, KeyEventArgs e) + { + if (templateManage != null) + { + ZedGraphControl send = sender as ZedGraphControl; + templateManage.zedControl_KeyUp(send, e); + } + } + + private void BtnBind_Click(object sender, EventArgs e) + { + if (textBox1.Text == "") return; + #region 绑定所有手术记录的值 + int id = 14; + if (textBox1.Text != "") id = int.Parse(textBox1.Text); + operationRecor = BOperationRecord.getRecord(new OperationRecord(), id, 1); + templateManage.OpeRecord = operationRecor; + + //指定对象的所有值属性的绑定 + templateManage.BindOperationRecordValueAll(templateManage.OpeRecord); + //非值对象的数据绑定 + templateManage.Bind(); + + templateManage2.OpeRecord = operationRecor; + + //指定对象的所有值属性的绑定 + templateManage2.BindOperationRecordValueAll(templateManage2.OpeRecord); + //非值对象的数据绑定 + templateManage2.Bind(); + #endregion + + foreach (AreaManageBase area in templateManage.ManageList) + { + area.setPrint(true); + } + foreach (AreaManageBase area in templateManage2.ManageList) + { + area.setPrint(true); + } + + zgcAnaesRecord.Refresh(); + zgcAnaesRecord2.Refresh(); + } + + private void button1_Click(object sender, EventArgs e) + { + try + { + this.Close(); + this.Close(); + } + catch (Exception) + { + } + } + private void panel1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e) + { + templateManage.SetPYL(); + } + private void myPanel1_Scroll(object sender, ScrollEventArgs e) + { + templateManage.SetPYL(); + } + + private void button1_Click_1(object sender, EventArgs e) + { + if (templateManage != null && templateManage.ManageList.Count > 0) + { + int OperationApplyId = 10; + if (textBox1.Text.Trim() != "") OperationApplyId = int.Parse(textBox1.Text.Trim()); + DocumentParent documentParent = new DocumentParent(); + documentParent.OperationApplyId = OperationApplyId; + //documentParent.OpeRecord = BOperationRecord.SelectSingle("OperationApplyId=@OperationApplyId", new ParameterList("@OperationApplyId", OperationApplyId), RecursiveType.Parent, 3); + + if (templateManage.OpeRecord == null) return; + //指定对象的所有值属性的绑定 + templateManage.BindOperationRecordValueAll(templateManage.OpeRecord); + templateManage.SetPYL(); //得设置一下偏移量 + //非值对象的数据绑定 + templateManage.Bind(); + } + } + + private void button4_Click(object sender, EventArgs e) + { + templateManage.BindDefaultValue(); + } + + private void button5_Click(object sender, EventArgs e) + { + templateManage.ClearEdit(); + } + + private void button2_Click(object sender, EventArgs e) + { + + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=1").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 1; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + private void button6_Click(object sender, EventArgs e) + { + + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=10").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 10; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + private void button7_Click(object sender, EventArgs e) + { + + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=20").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 20; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + + private void button9_Click(object sender, EventArgs e) + { + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=50").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 50; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + + private void button8_Click(object sender, EventArgs e) + { + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=30").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 30; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + + } + + private void button10_Click(object sender, EventArgs e) + { + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=40").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 40; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + + try + { + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=50").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage2 = JsonConvert.DeserializeObject(jsonStr); + templateManage2.ZedControl = zgcAnaesRecord2; + templateManage2.OpeRecord = operationRecor; + templateManage2.Id = 50; + bool reVal = templateManage2.Load(); + if (reVal) + { + AllRefresh2(); + } + else + { + MessageBox.Show(templateManage2.MsgStr); + } + AutoSizeF(); + + } + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + + + } + + private void button11_Click(object sender, EventArgs e) + { + frmTemplateD frmTemplateD = new frmTemplateD(); + frmTemplateD.Show(); + } + + private void button12_Click(object sender, EventArgs e) + { + + if (templateManage != null) + { + templateManage.ControlClear(); + } + + try + { + string jsonStr = DBHelper.ExecuteScalar("SELECT [JsonDate] FROM [dbo].[OperationRecordTemplate] where id=60").ToString(); + if (jsonStr != null && jsonStr != "") + { + templateManage = JsonConvert.DeserializeObject(jsonStr); + templateManage.ZedControl = zgcAnaesRecord; + templateManage.OpeRecord = operationRecor; + templateManage.Id = 60; + bool reVal = templateManage.Load(); + if (reVal) + { + AllRefresh(); + } + else + { + MessageBox.Show(templateManage.MsgStr); + } + AutoSizeF(); + + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + + } + + private void btnPrint_Click(object sender, EventArgs e) + { + if (textBox1.Text == "") return; + try + { + mPanes = new List(); + UpPanes = new List(); + + PrintDocPage(null, null); + + System.Drawing.Printing.PrintDocument pDoc = new System.Drawing.Printing.PrintDocument(); + pDoc.DefaultPageSettings.Landscape = false; + pDoc.OriginAtMargins = true; + pDoc.DefaultPageSettings.PrinterResolution.Kind = PrinterResolutionKind.High; + pDoc.DefaultPageSettings.Margins = new Margins(33, 0, 35, 0); + pDoc.PrintPage -= new PrintPageEventHandler(pDoc_PrintPage); + pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage); + pDoc.PrinterSettings.PrintFileName = + Application.StartupPath + "\\backup.xps"; + pDoc.PrinterSettings.PrintToFile = true; + pDoc.PrinterSettings.PrinterName = "XPS"; + pDoc.DefaultPageSettings.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; + pDoc.Print(); + + FixedDocument2Pdf(); + } + catch (Exception exp) + { + PublicMethod.WriteLog(exp, ""); + } + } + public static void FixedDocument2Pdf( ) + { + //// Convert FixedDocument to XPS file in memory + //var ms = new MemoryStream(); + //var package = Package.Open(ms, FileMode.Create); + //var doc = new XpsDocument(package); + //var writer = XpsDocument.CreateXpsDocumentWriter(doc); + //writer.Write(fd.DocumentPaginator); + //doc.Close(); + //package.Close(); + + //// Get XPS file bytes + //var bytes = ms.ToArray(); + //ms.Dispose(); + + byte[] bytes = File.ReadAllBytes( Application.StartupPath + "\\backup.xps"); + + // Print to PDF + var outputFilePath = @"D:\test.pdf"; + PdfFilePrinter.PrintXpsToPdf(bytes, outputFilePath, "Document Title"); + } + + int m_startPrintPage;// 打印的起始页码 + int m_endPrintPage;//打印的终止页码 + //int m_PageIndex;// 当前打印页码 + int count = 0; + private void pDoc_PrintPage(object sender, PrintPageEventArgs e) + { + System.Drawing.Printing.PrintDocument pDoc = sender as System.Drawing.Printing.PrintDocument; + m_startPrintPage = pDoc.PrinterSettings.FromPage; + m_endPrintPage = pDoc.PrinterSettings.ToPage; + + int printCount = mPanes.Count; + if (mPanes.Count > 0 && count < printCount) + { + mPanes[count].Draw(e.Graphics); + count++; + if (count < printCount) + { + e.HasMorePages = true; + } + } + else + { + e.HasMorePages = false; + } + } + + //public static void ImageConvertToPdfAnes(List Images, string SvaePath = @"D:\Temp.pdf") + //{ + // try + // { + // System.Drawing.Image pic = Images[0];//strFilePath是该图片的绝对路径 + // int intWidth = pic.Width;//长度像素值 + // int intHeight = pic.Height;//高度像素值 + // //pic.Dispose(); + // iTextSharp.text.Rectangle pagesize = new iTextSharp.text.Rectangle(intWidth, intHeight); + // Document pdfdoc = new Document(pagesize);//建立Document对象的实例,并设置Document的大小与边距。 + + // PdfWriter writer = PdfWriter.GetInstance(pdfdoc, new FileStream(SvaePath, FileMode.Create)); //建立一个PdWf riter对象Writer与document对象关联,通过Writer可以将文档写入到磁盘中。 + // pdfdoc.Open(); //打开文档。 + // PdfContentByte cb = writer.DirectContent; + // foreach (System.Drawing.Image image in Images) + // { + // image.Save(@"D:\temp.Jpeg", ImageFormat.Jpeg); + // iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(@"D:\temp.Jpeg"); + // img.SetAbsolutePosition(0, 0); + // cb.AddImage(img); //向文档中添加图像数据。 + // pdfdoc.NewPage(); + // } + // pdfdoc.Close(); //关闭文档,将缓冲区的内容写入磁盘以保存文件。 + // } + // catch (Exception ex) + // { + // } + //} + //public void ImageConvertToPdfAnes2(string SvaePath = @"D:\Temp.pdf") + //{ + // try + // { + // int intWidth = zgcAnaesRecord.Width;//长度像素值 + // int intHeight = zgcAnaesRecord.Height;//高度像素值 + // //pic.Dispose(); + // iTextSharp.text.Rectangle pagesize = new iTextSharp.text.Rectangle(intWidth, intHeight); + // Document pdfdoc = new Document(pagesize);//建立Document对象的实例,并设置Document的大小与边距。 + + // PdfWriter writer = PdfWriter.GetInstance(pdfdoc, new FileStream(SvaePath, FileMode.Create)); //建立一个PdWf riter对象Writer与document对象关联,通过Writer可以将文档写入到磁盘中。 + // pdfdoc.Open(); //打开文档。 + // PdfContentByte cb = writer.DirectContent; + // foreach (MasterPane image in mPanes) + // { + // // 创建一个位图对象 + // Bitmap bitmap = new Bitmap(intWidth, intHeight); + // // 创建一个画布对象 + // Graphics g = Graphics.FromImage(bitmap); + // g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + // g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; + // g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + // // 清除画布表面,填充指定的颜色 + // //g.Clear(Color.White); + // image.Draw(g); + // // 释放资源 + // g.Dispose(); + // bitmap.Save(@"D:\temp.Jpeg", ImageFormat.Png); + // iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(@"D:\temp.Jpeg"); + // img.SetAbsolutePosition(0, 0); + // cb.AddImage(img); //向文档中添加图像数据。 + // pdfdoc.NewPage(); + // } + // pdfdoc.Close(); //关闭文档,将缓冲区的内容写入磁盘以保存文件。 + // } + // catch (Exception ex) + // { + // } + //} + public List mPanes = new List(); + public List UpPanes = new List(); + private void PrintDocPage(object sender, PrintPageEventArgs e) + { + OperationRecord _record = operationRecor as OperationRecord; + if (_record.currentPage == 1) + { + PrintDocPane(e, zgcAnaesRecord, templateManage, true); + PrintDocPane(e, zgcAnaesRecord2, templateManage2, false); + } + else + { + for (int i = 1; i <= _record.pageCount; i++) + { + PrintDocPane(e, zgcAnaesRecord, templateManage, true); + if (i == 1) + { + PrintDocPane(e, zgcAnaesRecord2, templateManage2, false); + } + btnNextPage_Click(_record.PatientId.Value); + if (i != 1) + { + MasterPane mPane = new MasterPane(); + mPane.Border.IsVisible = false; + mPanes.Add(mPane); + } + } + } + + } + + public void SetNextPageTime() + { + OperationRecord _record = operationRecor as OperationRecord; + //当下一页的开始时间,小于当前最大时间 + DateTime curTimeTemp = OperationRecord.getOpeMaxTime(_record); + if (_record.lastPageBegin > curTimeTemp) return; + //先设置新页的开始时间 + _record.PageBegin = _record.lastPageBegin; + _record.lastPageBegin = _record.PageBegin.AddMinutes(240); + _record.pageCount++; + if (_record.pageCount > _record.currentPage) _record.pageCount = _record.currentPage; + + } + + private void btnNextPage_Click(int PatientId) + { + OperationRecord _record = operationRecor as OperationRecord; + if (PatientId == 0) return; + if (_record.pageCount == _record.currentPage) return; + SetNextPageTime(); + + try + { + if (PatientId != 0) + { + templateManage.OpeRecord = BOperationRecord.getRecord(_record, PatientId, 1); + templateManage2.OpeRecord = templateManage.OpeRecord; + templateManage.BindOperationRecordValueAll(templateManage.OpeRecord); + templateManage2.BindOperationRecordValueAll(templateManage2.OpeRecord); + + templateManage.Bind(); + templateManage2.Bind(); + + zgcAnaesRecord.Refresh(); + zgcAnaesRecord2.Refresh(); + } + } + catch (Exception ex) + { + PublicMethod.WriteLog(ex); + } + } + + private void PrintDocPane(PrintPageEventArgs e, ZedGraphControl zedGraph, TemplateManage template, bool InitChart) + { + OperationRecord _record = operationRecor as OperationRecord; + foreach (AreaManageBase area in template.ManageList) + { + area.setPrint(false); + area.BindTempData(); + } + int zedGraphMainWidth = zedGraph.Size.Width; + int zedGraphMainHeight = zedGraph.Size.Height; + + int width = 765; + int height = Convert.ToInt32(width * 1.414) + 2; + zedGraph.Size = new Size(width, height); + zedGraph.Width = width; + zedGraph.Height = height; + + if (InitChart == true) + foreach (PhysioDataConfig pp in _record.PhysioConfigList) + { + if (pp.ShowText == true) + { + pp.IsValid = false; + ///重新设置曲线属性 + pp.reSetCurveSpo2(); + } + } + TipBox.Hidden(); + + MasterPane mPane = zedGraph.MasterPane; //this.MasterPane; + mPane.Border.IsVisible = false; + //当前窗体中的矩形区域大小 + RectangleF saveRect = mPane.Rect; + if (InitChart == true) + template.initChart(); + mPanes.Add(mPane.Clone()); + if (e != null) + mPane.Draw(e.Graphics); //在打印文档中画出MasterPane内容 + using (Graphics g = zedGraph.CreateGraphics()) + { + mPane.ReSize(g, saveRect); + } + UpPanes.Add(mPane.Clone()); + + + zedGraph.Size = new Size(zedGraphMainWidth, zedGraphMainHeight); + if (InitChart == true) + template.initChart(); + + if (InitChart == true) + foreach (PhysioDataConfig pp in _record.PhysioConfigList) + { + if (pp.ShowText == true) + { + pp.IsValid = true; + ///重新设置曲线属性 + pp.reSetCurveSpo2(); + } + } + } + } +} diff --git a/DrawGraphManagement/MainUp.resx b/DrawGraphManagement/MainUp.resx new file mode 100644 index 0000000..9274a8f --- /dev/null +++ b/DrawGraphManagement/MainUp.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 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABACUWAAAlFgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8B////D////0v///+J////vf///9/////1/////v// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////+////9f///9////+9////if// + /0v///8P////Af///wD///8A////AAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////Ff// + /0n///+J////tP///9H////l////8v////v////+//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////7////7////8v///+X////R////tP///4n///9J////Ff///wD///8A////AP// + /wAAAAAAAAAAAP///wD///8A////A////yf///9n////sf///+7///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////7v///7L///9o////KP///wP///8A////AAAAAAD///8A////AP///wP///8i////hv// + /9n//////////v////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////+/////////9r///+H////Iv// + /wP///8A////AP///wD///8A////Jf///4D////b/////f////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////f///9v///+A////Jf///wD///8A////AP///xX///9n////1v// + //z///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////P// + /9b///9n////Ff///wD///8B////S////7T///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////7T///9M////Af///w////+N////8/// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////9P///47///8Q////S////7X///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////tv///0z///+J////0f// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////R////iv///7r////k//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////+X///+9////2f// + //D///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////8////+D////t////+P////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////7////9P// + //r////9//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////7////9//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v3//fz7//v5+P/79/X/+vf1//v49//8+/n//v38/////v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////+//37+v/59PH/9e3o//Ln + 4P/y59//8+rk//fx7P/7+Pb//v39//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////v///v3/+/f0//Tq4//u3NH/6tPE/+nSwv/s2cz/8eTa//jy7f/9+/r///7+//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7+//79/P/58uz/8d3P/+jI + sv/lu5//5bqd/+fDqv/r0b//9Ojf//v49v/+/f3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/f3/+/r5//bq4v/u0Lv/5baV/+Opgf/jqH//5bCN/+jApf/w283/+PHt//z6 + +f/+/v7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////7+//38+//59fP/8uLW/+vE + qf/kqH//451t/+Odbf/jo3j/5rGO/+zNuv/z5t//+fTy//79/f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/f3//Pn4//bv6//v2Mr/6LqZ/+Sebv/jlWD/45Zh/+Oaaf/kpXv/58Cn/+3c + 0f/17+v//fz7//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////39/f/7+Pb/8unk/+vR + wP/ms5D/45lm/+OTXP/jlF3/45di/+Ofcf/jt5j/6NLD//Lp4//9+/r///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////f39//r29P/w5N3/6Mu3/+Wviv/jl2P/45Jb/+OTXP/jlmD/45xr/+Gv + jf/lybb/8eTc//z6+f////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////9/Pz/+vTy/+7f + 1v/lxa//46uF/+OWYv/jklv/45Nc/+OVXv/immj/4KqE/+XDq//w4NT//Pn3//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////38+//58/D/7NvQ/+PAqP/iqID/45Zh/+OSW//jk1z/45Re/+OY + Zv/hpXz/5b2h//Dczf/79vT///7////+/v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////v///fv7//ny + 7v/q18r/4ruh/+GlfP/jlmH/45Jb/+OTXP/jlF7/45hk/+Ojdv/nuJj/79bE//fw7P/8+/v//v7+//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////9+/v/+PHt/+rUxf/huJv/4aN5/+OVYP/jk1v/45Nc/+OT + Xf/jl2L/5KBw/+eyjf/szbf/8+ff//n29P/+/fz///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////37 + +v/48Or/6tG//+G0lP/hoXX/45Vg/+OTW//jk1z/45Nd/+OVYP/km2n/5qqB/+nDqP/t3dH/9vHs//38 + +/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////7//fv5//jv6P/qzrn/4rGO/+Gfcv/jlV//45Nb/+OT + XP/jk1z/45Re/+SXYv/ko3X/5bma/+jSwv/z6+T//Pv5//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////+ + /v/9+vj/+e7m/+3Ls//lrof/455u/+OVX//jk1v/45Nc/+OTXP/jk13/45Rf/+Odbv/isY7/5cm1//Hl + 3f/8+ff///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////v79//z49f/46uD/7sar/+eqgP/knGr/45Re/+OT + XP/jk1z/45Nc/+KSXP/jk13/4ppp/+Krhf/lwan/8eHV//z49f///v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///9/Pv/+fPw//Tj1//sv6D/5qR2/+SZZf/jlF3/45Nc/+OTXP/iklv/4ZFb/+KSXP/imGb/46Z9/+a7 + nv/x3M7/+/by//79/f////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////7///7+///+/v///v7///7+///+ + /v///v7///7+///+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////z6+f/27ur/8NvO/+m4lf/lnm3/45Vg/+OT + XP/jk1z/4pJb/+CRWv/gkFn/4ZFa/+OXY//konX/57WS//DWxP/58uz//Pv6///+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+/v7//v39//38+v/8+ff//Pj2//z39f/89/T//Pf1//z49v/8+ff//Pv5//39/P/+/v7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7/+vf2//Pp4//s1MT/57GM/+SaZ//jlF3/4pNc/+KSW//hkVv/35Ba/96PWf/gkFn/4pVf/+Sd + bP/mrIP/7My0//Po4P/59vT//v39//////////////////////////////////////////////////// + //////////////////////////////////////////////38/P/7+Pb/9/Ds//Pn4P/y49n/8uHW//Hg + 1f/x4db/8ePZ//Ln3//17un/+ff1//z7+//+/v7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////+/v/59fP/8OTc/+jNuv/krIb/45hl/+OT + XP/iklv/4ZFb/+CQWv/ej1n/3Y5Y/96PWf/hklz/45hl/+Wkd//owKT/7dzQ//Xv6//9/Pv///////// + //////////////////////////////////////////////////////////////////////////////7+ + /v/9/Pr/+vXy//br5f/v3tL/6dC+/+jJtP/oxq//58Wt/+fGr//nybT/6M+8/+3azP/06eD/+fPu//z6 + +P/+/v3///7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////7+//n08f/u39b/5May/+Opgv/jmGT/45Nc/+KSW//hklv/35Fa/96PWv/cj1n/3o9a/+GR + XP/ilWH/5J5v/+S2lv/p0cH/8+ni//37+f////////////////////////////////////////////// + ///////////////////////////////////+/v3//Pv5//n07//z597/7tfI/+nHsP/luZv/5LKQ/+Sw + jP/kr4v/47CM/+OykP/kt5f/6cGm/+/Svf/z4dT/9+/p//v49//+/f3///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////+/v///v7/+PLu/+3b0P/iwar/4aZ9/+OX + Y//jk1z/4pNc/+CTXv/flF//3pNf/92TX//fk17/4ZNd/+KVX//im2r/4q6J/+bIs//x49n//Pn4//// + ///////////////////////////////////////////////////////////////////////////+//79 + +//59fL/8+jh/+3Wxv/owqj/5LGN/+Olev/ioHL/4p5v/+Kebv/in2//4qBx/+Ojdv/lq4L/6rqX/+7N + tv/y4dX/9/Ht//z6+v///v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////7+//79/v/38Oz/69fK/+C8ov/hpHn/45Zi/+OTXf/ilWD/4Jpq/96fcv/fonf/4KJ3/+Ke + b//jmWb/45dj/+OaaP/hqID/5cCm//He0v/8+fb///////////////////////////////////////// + /////////////////////////////////////////fz6//Xu6P/r2cv/58Oq/+Svi//ioXT/4plo/+KX + Y//ilmH/4pZh/+KWYf/il2P/45hm/+SdbP/mp3r/6bmX/+zOuf/y5Nn/+vf0//7+/f////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////+/v/+/fz//fr5//z59v/99/T//ffz//338//99/P//ffz//338//99/P//ffz//33 + 8//99/P//ffz//338//99/P//ffz//338//99/P//ffz//338//99/P//ff0//349f/9+vj//v38///+ + /v///////////////////////////////////////////////////v7//v7+//bv6v/q1MT/4Lea/+Ch + df/jlmL/45Re/+KYZf/go3r/4K+N/+K2l//luJn/5q2G/+Whc//kmmj/45pn/+Kkef/mu5z/8drL//v2 + 8////////////////////v7//fz6//z59//8+PX//ffz//338//99/P//ffz//338//99/P//ffz//33 + 8v/68uv/8eHV/+bJs//js5L/4qF2/+KYZf/jlWD/45Re/+OUXf/jlF3/45Rd/+OUXv/jlV//45Zi/+Sb + af/lqH7/57qb/+3TwP/37uj//Pn4//7+/v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/v7//fz8//r28//16+T/9OTZ//Xf + 0P/23Mv/9tzL//bcy//23Mv/9tzL//bcy//23Mv/9tzL//bcy//23Mv/9tzL//bcy//23Mv/9tzL//bc + y//23Mv/9tzM//bczP/13s7/9eHU//Xn3v/69PD//fv7//7+/v////////////////////////////// + ///////////////+/v/+/v3/9+7n/+rQvv/hspL/4Z9y/+KWYf/jlWD/45tr/+Kui//kwaj/6cu3/+zO + uP/pu5z/5ad+/+Odbf/jmWb/46Jz/+e3lP/v1cL/+PHs//z9/P/+/v3///79//37+v/48ev/9OXb//Tg + 0v/13c3/9tzL//bcy//23Mv/9tzL//bcy//23Mv/9tzL//TZxf/tzbX/5rmb/+Opgf/im2r/4pRf/+OT + Xf/jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXf/jlF3/45Zh/+Oebv/kq4T/6cKn//Hg1f/38e3//Pv6//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/f/8+vj/9+7p/+3bzv/rzbn/7MSo/+6/n//uv5//7r+f/+6/n//uv5//7r+f/+6/ + n//uv5//7r+f/+6/n//uv5//7r+f/+6/n//uv5//7r+f/+6/n//uv5//7r+f/+3CpP/sx67/7dLA//Xp + 4f/79vT//fz8//////////////////////////////////////////////7+//7+/v/37eX/7M25/+Ku + i//hnW7/4pZh/+OXY//koHL/5rqd/+rSwv/v39T/8uDU/+vIsP/kroj/4p9x/+OZZf/kn27/6LKM/+3O + uP/06uL/+vj3//78/P/9/Pv/+vbz//Lj2P/rz7v/68Ws/+3Aov/uv5//7r+f/+6/n//uv5//7r+f/+6/ + n//uv57/7b6c/+q3k//mrIX/5KFz/+OXY//jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OT + XP/jlF3/4pdj/+OfcP/ls5D/6tLB//Ln4f/79/b///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v79//z59v/06uP/59DB/+W+ + ov/msIr/6Kl8/+ipff/oqX3/6Kl9/+ipff/oqX3/6Kl9/+ipff/oqX3/6Kl9/+ipff/oqX3/6Kl9/+ip + ff/oqX3/6Kl9/+ipff/oqX3/56uB/+axjP/ovaH/7tnL//Xt5//7+Pb////+//////////////////// + /////////////////////v7///7+//js4//uy7T/5KuE/+Kba//jl2L/5Jto/+eoff/rx67/8OHX//Xt + 5//36+T/7NC9/+Oykf/ioXX/45hk/+SaZ//mqn//6cSp/+7f0//28e7//Pr5//r39f/27Ob/7tXE/+e9 + oP/msYz/56qA/+ipfP/oqX3/6Kl9/+ipff/oqX3/6Kl9/+ipfP/nqHv/5qZ4/+Whcv/km2j/45Vf/+OT + W//jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXP/jlF7/4pln/+Oqg//lx7L/7uDW//n1 + 8v////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v3/+/j2//Po4f/lzLv/4raY/+Ome//lnWr/5Z1r/+Wda//lnWv/5Z1r/+Wd + a//lnWv/5Z1r/+Wda//lnWv/5Z1r/+Wda//lnWv/5Z1r/+Wda//lnWv/5Z1q/+Wcaf/knWv/5KJ0/+Wu + iP/oyrX/7+HY//jz7////v7////////////////////////////////////////+/v/+/fz/+Org/+/J + r//mqX//45po/+SYZP/mn27/6a+H//DRvf/27Ob/+vXy//nw6//s1cX/4ria/+Gkev/jl2P/45Zg/+Si + dP/muZr/6dLD//Pq5P/69vT/9vDs//Dh1v/qyLD/5rCL/+Wlef/ln27/5Z1q/+Wda//lnWv/5Z1r/+Wd + a//lnWv/5Z1r/+Wdav/lnWr/5Jto/+OYY//jlF7/45Nc/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OT + XP/jk1z/45Nc/+OTXP/imGT/4ad+/+LBqv/s3NH/+PPw//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////79/f/7+Pb/8+jh/+XL + uf/itpj/5KZ8/+WebP/lnmz/5Z5s/+WebP/lnmz/5Z5s/+WebP/lnmz/5Z5s/+WebP/lnmz/5Z5s/+We + bP/lnmz/5Z5s/+WdbP/lnGn/5Jhj/+OXYv/jm2j/46Z7/+S/pf/r2Mv/9u7p//7+/f////////////// + //////////////////////7//f38//r59//15dn/7saq/+eofP/kmmf/5Jll/+ehcv/qs43/8tjE//ny + 7f/8+ff/+fPv/+3bzf/jvqT/4ah//+OYY//jlF3/451t/+Owjv/myLT/8eXc//jz7v/z6OD/6tTE/+a7 + nf/lp3z/5aBx/+WebP/lnmz/5Z5s/+WebP/lnmz/5Z5s/+WebP/lnmz/5Z5s/+WebP/lnWr/5Jlk/+OV + Xv/jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OXY//hp37/4cGr/+vc + 0f/48/D///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v79//v49v/z6eP/59C//+W9ov/nsIr/6Kl8/+ipff/oqX3/6Kl9/+ip + ff/oqX3/6Kl9/+ipff/oqX3/6Kl9/+ipff/oqX3/6Kl9/+ipff/oqHv/56V4/+agcf/kmGT/45Vf/+OX + Y//ioXP/4raY/+nRwP/16uP//v79//////////////////////////////////7+/v/8+/r/9/Pw//Hf + 0v/swaT/56Z5/+WaZf/kmWX/5qN0/+u2kf/028r/+/by//38+//69vL/7uDW/+XGr//irYf/45pm/+OT + XP/jmmj/4qqD/+TAp//w39T/9+/q/+/g1f/lyLL/4q+L/+Sgcf/ln23/56Jy/+ileP/oqHz/6Kl9/+ip + ff/oqX3/6Kl9/+ipff/oqHz/56Z5/+ajc//knGn/45Zg/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OT + XP/jk1z/45Nc/+OTXP/jlF3/45lm/+Kpgf/jxbD/7d7V//j08f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v7//Pr5//fw + 6//u39P/7dO//+/KsP/wxaf/8Mao//DGqP/wxqj/8Mao//DGqP/wxqj/8Mao//DGqP/wxqj/8Mao//DF + qP/wxaj/8MWn/+2/oP/otpP/5KqC/+Obav/jlF//45Zg/+Kebv/hsI7/6Mu3//To3//+/v3///////// + /////////////////////////v39//v49//07ej/7dfH/+m7mv/moXL/5Jhi/+SZZf/lpXf/6rmV//Xe + zf/8+PT//v38//v49v/x6OH/6dC+/+W2lP/kn2//45Zg/+OZZv/jpnv/5rqb//Lczf/47eb/7trN/+O+ + pP/gp3//45xq/+afbf/oqHr/7LWQ/+/Bov/wxaf/8Mao//DGqP/wxqj/8MWn/+7CpP/quZf/5auD/+Of + cf/jlmH/45Jb/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OTXP/jk1z/45Nc/+OWYf/knm3/5K+L/+bM + uv/v49v/+fb0//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////7+///+/fz/+/j2//fw6v/26+H/9+fa//jl1//45df/+OXX//jl + 1//45df/+OXX//jl1//45df/+OXX//jl1//45df/+OXX//jk1v/449X/8tnI/+rKs//kt5f/46Fz/+OX + Yv/jlmH/45xr/+Kshv/pxq7/9OXa//78+//////////////////////////////////9/f3/+/b1//Hn + 4P/pz7z/5rOQ/+Sbaf/jlV//45lm/+Smev/ou5n/9N/Q//z49f/+/v3//Pr5//Xv6//u283/6MCj/+Sm + e//jmWb/45ll/+Wjdv/ptpL/89fE//fo3v/u1ML/47eY/+Gidv/jmmf/5qBv/+mtg//wxqn/9t3M//jk + 1v/45df/+OXX//jl1//35Nb/9eDQ/+3Puf/kt5n/4qZ9/+KZZ//jlF3/45Nc/+OTXP/jk1z/45Nc/+OT + XP/jk1z/45Nc/+OTXP/jlV//5Jtq/+WmfP/mupz/6tbI//Lp5P/7+Pb///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////7+ + /v/9/Pv//Pj2//v28v/89e///PTu//z07v/89O7//PTu//z07v/89O7//PTu//z07v/89O7//PTu//z0 + 7v/89O7//PPu//zz7P/26N7/7dfI/+fCqf/lqX//5Jtp/+SXY//jm2n/46h//+nCpf/y4NL/+/j1//79 + /P////7///////////////////////38/P/69fL/7uHY/+bIsv/krYj/45hk/+OTXf/jmWj/46d+/+a9 + n//z4NP//fj2///+/v/9/Pv/+fXz//Lk2v/qyK//5KyF/+Kca//jmWX/5aJy/+mxiv/vzbf/8tvN/+zJ + s//ksI3/4p9w/+OZZv/loXL/6LCL//HPuP/66+H/+/Ps//z07v/89O7//PTu//zz7v/57+f/8t/S/+jI + sv/ks5P/4qJ2/+KYZf/jlV//45Nd/+OTXP/jk1z/45Nc/+OTXP/jlF3/5JZg/+WbaP/kpXn/5bOQ/+nI + sf/w4tj/9/Ht//z7+v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////+/v/+/v3//v38//79/P/+/Pv//vz7//78 + +//+/Pv//vz7//78+//+/Pv//vz7//78+//+/Pv//vz7//78+//+/Pv//vz6//jz7f/x49j/6s66/+ey + jP/loHH/5Jlm/+OaZv/lpXf/6ryc//DZyP/48u7//Pv6//7+/v///////////////////////fz7//nz + 8P/s3NH/5MGp/+Opgf/jlmL/45Nd/+Kaaf/iqYP/5L+m//Li1//9+ff///////7+/v/8+/r/9uzk/+zP + u//jso//4Z9x/+OZZv/ln2//6KuC/+vApP/syrX/6b2f/+Wqgf/jnGv/45lm/+Sidv/ntJP/8dXC//vz + 7v/++/r//v38//78+//+/fv//vz7//z59v/27eb/7dnM/+jErP/kr4z/4qB0/+KZZv/ilmH/45Vg/+OV + X//jlV//4pVg/+OXY//knGr/5qR4/+axjv/mwqj/69fI//Xt6P/7+Pb//v39//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////+/n2//Xt5v/u2cn/6LmY/+Slef/jmmj/45hj/+Wfbv/otJD/7dC8//Pq + 5P/69/b//v39///////////////////+///9+/r/+PLt/+rXyf/iu6D/4aV8/+OVYf/jklz/4ptr/+Gs + iP/kxK3/8uTb//359/////////7+//7+/f/48Ov/7dTE/+K3mf/gonb/45ll/+SbaP/monX/56+K/+e1 + k//mrYb/5aJz/+SZZf/jmWb/46V8/+W5nP/w2sv/+/bz///+/v///////////////////////v39//r2 + 8//06eL/7tfI/+nErP/kspH/4aV7/+Gfcv/inGz/4ptp/+Kbav/hnW//4aJ2/+Oqg//nt5b/6sau/+3W + xv/y59//+vb0//38/P///v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////9/Pv/+fTv//Li + 1v/nv6P/46iA/+Kbav/jlmD/5Jlm/+WshP/oxq//7uHY//jz8f/+/fz///////////////////7///37 + +v/48Or/6dLB/+G2mP/honj/45Vg/+OTXP/inW7/4rGP/+TKt//y6N///fr4/////////v7///7///nz + 7//t2cz/4r2k/+Gmff/jmWb/45Zi/+OZZv/jnm//46F0/+Oebv/kmmf/5JZh/+ObaP/jq4X/5cKq//Df + 1P/8+PX///7+/////////////////////////v7//fv6//r18v/16uL/8NvP/+nKtv/juZ3/4rGP/+Os + hv/kqoL/5aqC/+Ouiv/itZb/5cCn/+rOvP/w3dD/9erj//r08f/9+/r///7+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////79/f/79/T/9Ofd/+fErP/irIf/4p1t/+OVX//jl2H/5KZ8/+W+ + pf/q2c7/9/Dt//78+/////////////////////7//fv5//jv6P/qzrv/4rKR/+Ggc//jlWD/45Nd/+Of + cf/jt5f/59HB//Pr5f/8+/n/////////////////+vXy/+/f1f/lxrL/462K/+Scbf/jlmL/4pVg/+GX + Y//hmGX/4pdj/+SXYv/kmGP/5aJy/+a3lv/pz77/8ujh//z69////v7////////////////////////+ + /v///f3//fr6//r08f/27Ob/8eDV/+zTwv/rzLf/7Mmx/+3Hrf/tx63/68u0/+vQvf/t2Mr/8eLZ//Xs + 5v/59PL//Pv6//7+/f////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////v7+//z5 + 9//26+L/58q1/+Gwjv/hn3H/45Rf/+OVX//jonb/47ib/+jSw//27ej//fz7//////////////////// + /v/9+/j/+O7m/+vLtf/jr4r/4p5w/+OVYP/jlF7/5KN2/+a9oP/r2c3/9u/r//38+/////////////// + ///79/b/8ubf/+nRwf/mt5j/5KJ2/+KYZf/hk13/4JJc/+GTXf/ilF7/45Zg/+SbaP/nqX7/6sOo/+/e + 0v/28e7//fv7///////////////////////////////////////+/v7//fz6//v49v/58u7/9uvk//bn + 3v/25tv/9uXZ//bl2f/259z/9erh//bu6P/48/D/+/f2//37+//+/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////v7//fr4//bt5//nz77/4bWW/+GhdP/jlF7/45Re/+Kf + cv/is5P/58u5//Xr5P/9+/r////////////////////+//37+P/57eX/7cmw/+WshP/jnW3/45Zh/+SY + ZP/nqn//68eu//Dk2//49fP//v38//////////////////z6+f/37ur/793S/+nApv/kp37/4ppp/+GT + Xf/hkVr/4pJb/+KTXP/jlmH/5J5t/+evif/tzbb/9Oni//r4+P/+/f3///////////////////////// + //////////////////////7//v79//37+//8+ff//Pf1//z39P/89/P//Pfz//z39P/8+Pb//Pr5//38 + +//+/f3///7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////+ + /v/9+vn/9+/q/+nVyP/ju5//46R6/+OVYP/jlF7/4p1u/+Kui//mxrD/9eff//36+P////////////// + /////v7//fr3//ns4v/vx6v/56qA/+Sca//kmGP/5Z1r/+myi//w0bz/9u7o//v6+f/+/v7///////// + /////////v39//v28//16OH/68mz/+Osh//hnG7/4ZRf/+KSW//ik1z/45Nd/+OXYv/ioHP/5bST/+/T + wf/48ev//f39//7+/v///////////////////////////////////////////////////v////7+//79 + /P/+/fz//vz8//78/P/+/Pz//vz8//79/P/+/v3//v7+///+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////+//38+v/48u7/7NzS/+fErP/lrIT/5Zpn/+OW + YP/jnGv/5KqE/+jBp//z49j/+/f0//79/f////////////79/P/79vP/9+fd/+7Ep//nqX7/5Z1q/+SZ + ZP/moHD/67eT//LXxP/59PD//f39//7+/v/////////////////+/v7//Pr4//ju6P/sz7z/47CP/+Gf + c//ilWD/4pNb/+OTXP/jk17/45hk/+Kkev/kup7/79jJ//r18P////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////7//vz7//n18v/x5d3/6826/+e0kf/loHD/45hj/+Obaf/lp33/6Lyd//Hez//48+7//Pv6//// + /////////Pv6//jy7f/z4dT/7MCh/+ene//lnGn/5Jll/+WidP/qupj/89vK//z49f/+//////////// + ///////////////////9/Pv/+fLt/+3Vxf/itpj/4aN5/+KWYv/jklv/45Nc/+OVX//jmmj/4amD/+TA + qv/v3tL/+/f0//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/f3/+/j3//bt6f/v18j/6bye/+Sk + eP/jmWb/45lm/+WidP/otJD/7tXD//Ts5f/6+Pb///7+///////7+Pf/9ezm/+7Zyf/puZf/5qN0/+Sa + Zv/jmWb/46N3/+m8nP/z3c3//fr3//////////////////////////////////79+//69PD/7drN/+O9 + o//hp3//45dj/+OSW//jlF7/5Jhj/+SfcP/jsZD/5sq4//Hj2//8+ff///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////+/v/++/v/+vbz//Pg1P/pw6j/4qiA/+Kaaf/jl2L/5Jxq/+aqgv/pyrT/8OPa//jz + 8P/+/v3///7+//r28//x5t3/6dC9/+axi//knWv/5Jdi/+OZZv/ipXv/576h//Le0P/9+vj///////// + /////////////////////////v38//r28v/v4Nf/5caw/+Osh//jmWX/45Nb/+OWYP/lnGr/5qh9/+e9 + of/r1sn/8+rl//z6+f////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////+//79/P/8+vj/9OXb/+nI + sf/hrIj/4pxs/+OWYf/jmWX/5KV5/+XCqP/s28//9vDr//7+/P////7/+PPw/+7g1f/lx7L/46qD/+OZ + Zv/jlmD/4ppo/+Cof//mwab/8uDT//37+f/////////////////////////////////+/f3/+/j1//Ho + 4f/p0L//5raU/+Wfbv/klV//45di/+SgcP/mr4j/68mx//Hi2f/38u///fz8//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v79//38+v/06eD/6M25/+CxkP/hnm//45Zg/+OXYv/joXT/4rqd/+nU + xf/07OX//v38//7+/v/38e3/7NrN/+K/p//hpXz/45dj/+OVYP/im2n/4KqF/+XErP/x4tb//fv5//// + //////////////////////////////7+/v/8+/n/9fDr/+7bzv/pwKP/5qd6/+SaZ//jm2j/5KV6/+a2 + lv/u08H/9u7o//v49//+/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////v7//v37//Xs + 5f/p0sH/4LaY/+Kgcv/jlmH/45Zh/+KfcP/gs5T/5868//Tp4f/+/Pv//v7+//bv6f/q1MX/4Lic/+Gi + dv/jlmL/45Vg/+Kca//grYr/5cey//Hk2v/9+/r///////////////////////////////////////38 + +//59vT/8+bc/+vLtP/lsYz/4qN3/+Kid//jrov/58Gp//De0f/69fL//vz8//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+/v/+/fz/9u7p/+vYyf/ivqL/46R3/+OXYv/jlmH/4p1t/+Cv + i//nybP/8+bc//77+v/+/v7/9u3m/+rQvv/gspT/4Z9y/+OWYf/jlWD/4p1t/+Cxkf/mzLr/8ubf//37 + +v///////////////////////////////////////v79//37+v/37+n/7dfI/+S/pf/hsZL/4rKS/+W/ + pv/q0cL/8+jh//z59////v3///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////+//79 + /P/48u7/7t/U/+bHsf/lq4L/5Jxp/+SXY//jnGv/4qqE/+fEq//y4db//Pn3//79/f/26+T/6824/+Gv + jP/hnW7/45Vg/+OVYf/jnnD/47eZ/+jTxP/z6uT//fz7//////////////////////////////////// + //////7//v79//v28//z5t3/7NXG/+nMuP/qzbj/7dbG//Hj2v/48e3//fz7/////v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////7//v7+//n18//y5t7/69HA/+ezj//loXL/5Jlm/+Oa + aP/jpnz/6L6h//Dczv/59fL//fv6//fq4f/sy7P/46yF/+Kca//jlWD/45dj/+SidP/mv6T/7NvP//Xv + 6v/+/fz///////////////////////////////////////////////7//fv6//nz7//16+X/9Ofe//Xn + 3v/27OX/+PPu//v59//+/v3///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+////+/n3//bu6P/w287/6buc/+Wlev/jm2n/45hk/+Ogcf/nt5X/7tTD//Xu6f/7+Pb/+One/+7J + r//lqoD/45tp/+OWYf/kmmj/5qh9/+vJsf/x5dz/+PXx//7+/f////////////////////////////// + ///////////////////+/v3//fz7//z6+P/8+Pb//Pj2//z6+P/9/Pr//v39//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/Pv/+vTx//Tj2f/owaf/46mC/+Kc + a//jlmH/45ln/+athv/qybP/8OTc//jy7f/35dn/78er/+eofP/kmmf/5Jhk/+agb//qsYn/8dTB//fv + 6f/8+vj///7+///////////////////////////////////////////////////////+/v7//v38//79 + /P/+/fz//v39//7+/v/+//7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/f/7+PX/9eng/+fHsP/irYn/4p1v/+OVX//jlmH/5KV7/+a9of/q1MX/8eHV//LY + xf/tv5//56Z4/+SaZv/kmWb/5aJ1/+q1kv/z2sn/+/Tv//79/P////////////////////////////// + ///////////////////////////////////////////+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7+//z5+P/27OX/58y4/+Gy + kf/hn3L/45Rf/+OUX//jn3H/47CO/+TBqv/qy7f/7Mar/+q1kP/mo3T/5Jll/+OZZ//kpHn/6bmY//Tf + z//89/T///7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////v///fr5//fu6P/o0cH/4beZ/+Gidv/jlF7/45Nd/+KZaf/go3v/4a2M/+W1 + lP/nso3/5qh+/+Sdbf/jl2P/45pp/+Omff/nvJ7/9OHT//359v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////+/v/9+/r/9/Hs/+rY + y//jvqP/4qZ8/+OVX//iklz/4ZRh/+CYaP/fnG//4qBy/+OgcP/im2n/4ZZi/+KUX//immn/46mC/+a+ + o//z4tb//fn3//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////+//38+//49PD/7uHX/+jIsv/lroj/5Jln/+KUX//hkl7/4JNf/9+V + Yv/gl2P/4ZZi/+CUYP/gk13/4ZNd/+Kba//iq4f/5cKq//Pk2v/9+ff///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////7//v38//r4 + 9f/y6+T/7NPB/+i3lv/koHH/45Zi/+KTXP/gkVv/35Fc/9+SXP/fklz/35Fb/+CSW//hk13/4Zxt/+Gu + jP/lxrH/8+bd//36+P////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////+/v3//Pv5//fz7//w3c7/6cCi/+Slev/jmWb/4pNd/+CR + Wv/fkFr/35Ba/9+QWv/fkFr/4JJb/+GTXf/inW//4rKR/+XLuf/z6eH//fv5//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /v/+/fz/+/n2//Pk2P/pxaz/4qmB/+Kbaf/hk17/4JBa/96PWf/fkFr/35Ba/+CQWv/gkVz/4ZNe/+Kg + c//jtpj/5tDB//Pr5f/9+/n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////79/f/8+/r/9Off/+nKtP/grYn/4Zxt/+KU + X//gkFr/349Z/9+PWf/fkFn/4JBb/+GSXv/jl2T/5KZ7/+a9ov/p18v/9e7q//37+v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v7+//38/P/16uP/6c68/+Cykv/hnnH/4pRg/+GRW//gkFr/349Z/96PWf/fkVv/4ZRg/+Sc + a//mrYX/6cat/+3f1f/38u///fz7//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////v7//v39//bt5//q08T/4bic/+Gh + dP/ilWH/4pJc/+GRW//fkFr/35Ba/+CRXP/ilmL/5aBw/+i0j//tz7n/8ujh//n29f/+/f3///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////+/v/+/f3/9/Dr/+zazf/kwKf/46V6/+OWYv/jk1z/4pJc/+GRW//hkVv/4pNd/+OY + ZP/lonP/6rmW//HXxf/58+///fz7//7+/v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////79/v/48/H/8OLY/+jL + tv/mrYb/5Jtp/+OVX//jk1z/4pJc/+KSXP/jlF7/45ll/+Wjdv/qu5v/89zM//z49f/+//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7+//r39f/06uT/7tbG/+i2lP/lonP/5Jhj/+OTXf/jk1z/45Nc/+OU + Xv/jmWb/46V6/+m+oP/z39D//fr4//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v///Pv5//jx + 7f/y4NT/6b+h/+WnfP/jm2j/45Rd/+OTXP/jk1z/45Vf/+OaaP/ip3//58Cm//Pg1P/9+/r///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////+/fz/+/fz//Xn3v/oxav/4quF/+KcbP/jlF3/45Nc/+OT + XP/jlV//4ptp/+CqhP/mw6z/8uLX//37+v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////+ + /v/8+ff/9uvj/+jKtf/hsI3/4Z5w/+OUXv/jk1v/45Nc/+OVYP/inGv/4K2K/+bHsv/y5Nr//fz6//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////7+//36+f/27ef/6M++/+G0lf/hoXX/45Re/+OT + W//jk1z/45Vh/+Kdbv/hsZH/5su5//Lm3v/9/Pv///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7//fv6//fw6//p1cf/4rqf/+Kkev/jlF//45Nb/+OTXP/jlmH/455w/+K1l//o0MD/8+nj//38 + +/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v/9/Pr/+PPv/+zc0f/lwqn/46h//+OV + X//jk1v/45Nc/+OWYf/joHL/47ue/+nWyP/07ef//v38//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////79/P/69vP/8OXe/+rMuP/msIv/5Jpn/+OVXv/jlV//5Jpm/+Wme//mwqn/7NzR//Xw + 7P/+/f3///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////39//z59//27ur/79jI/+m6 + mv/loHL/45dj/+OXY//ln27/566G/+rLtf/v49v/9/Pw//7+/f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////v7//vz7//r39P/z4dX/68On/+SnfP/jmmj/45pn/+Skdf/otZH/7dTC//Tr + 5f/69/X//v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/fz//Pr5//Xn + 3f/qyLH/4auG/+KcbP/im2r/46d9/+a7nP/w3M7/+fPv//38+/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+/f/9/Pv/9u3m/+zTw//jup7/4qqE/+Kogf/js5L/58au//Pl + 2v/7+PX//v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////7+//7+ + /f/58+//8OLY/+nPvv/kwKb/472i/+XFr//q1cX/9uzm//37+f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////v////v59//27+r/8OTb/+vYyv/p1cb/69rO/+/k + 3P/48/D//v38//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v38//v59v/59PD/9u7o//Xt5v/27+r/+PTw//z6+f/+/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////v7//v38//38+v/8+vj//Pn3//z6 + +P/9+/r//v39//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////v7//v7+//7+/v///v3//v79//7+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////8/////v// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////+/////f////P////6//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////v////0////4P// + //P///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////8////+D///+8////5P////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////l////vf// + /4n////R//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////9H///+K////S////7X///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////tf// + /0z///8P////jf////P///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////T///+O////D////wH///9L////tP////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////tP// + /0v///8B////AP///xX///9m////1v////z///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////P///9b///9m////Ff///wD///8A////AP///yT///9/////2v// + //z///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////z////a////f/// + /yT///8A////AP///wD///8A////A////yD///9/////1v/////////+//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////7/////////1v///3////8g////A////wD///8AAAAAAP///wD///8A////A/// + /yT///9l////sP///+7///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////7v///7H///9l////JP// + /wP///8A////AAAAAAAAAAAA////AP///wD///8A////AP///xT///9I////iP///7L////P////4/// + //L////7/////v////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////9////+P// + /+/////i////z////7L///+I////SP///xT///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAP// + /wD///8A////AP///wH///8O////R////4P///+4////3/////T////9//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////r////t////1////7b///+D////Rv///w7///8B////AP// + /wD///8AAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAc= + + + \ No newline at end of file diff --git a/DrawGraphManagement/MyPanel.Designer.cs b/DrawGraphManagement/MyPanel.Designer.cs deleted file mode 100644 index 1f5468e..0000000 --- a/DrawGraphManagement/MyPanel.Designer.cs +++ /dev/null @@ -1,42 +0,0 @@ -namespace DrawGraphManagement -{ - partial class MyPanel - { - /// - /// 必需的设计器变量。 - /// - private System.ComponentModel.IContainer components = null; - - /// - /// 清理所有正在使用的资源。 - /// - /// 如果应释放托管资源,为 true;否则为 false。 - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region 组件设计器生成的代码 - - /// - /// 设计器支持所需的方法 - 不要 - /// 使用代码编辑器修改此方法的内容。 - /// - private void InitializeComponent() - { - this.SuspendLayout(); - // - // MyPanel - // - this.Name = "MyPanel"; - this.ResumeLayout(false); - - } - - #endregion - } -} diff --git a/DrawGraphManagement/MyPanel.cs b/DrawGraphManagement/MyPanel.cs deleted file mode 100644 index 463ed88..0000000 --- a/DrawGraphManagement/MyPanel.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Data; -using System.Linq; -using System.Text; -using System.Windows.Forms; - -namespace DrawGraphManagement -{ - public partial class MyPanel : Panel - { - public MyPanel() - { - InitializeComponent(); - } - - protected override Point ScrollToControl(Control activeControl) - { - return this.AutoScrollPosition; - } - } -} diff --git a/DrawGraphManagement/MyPanel.resx b/DrawGraphManagement/MyPanel.resx deleted file mode 100644 index 1af7de1..0000000 --- a/DrawGraphManagement/MyPanel.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/DrawGraphManagement/PdfFilePrinter.cs b/DrawGraphManagement/PdfFilePrinter.cs new file mode 100644 index 0000000..997a436 --- /dev/null +++ b/DrawGraphManagement/PdfFilePrinter.cs @@ -0,0 +1,180 @@ +using System; +using System.IO; +using System.Linq; +using System.Printing; +using System.Runtime.InteropServices; + +namespace DrawGraphManagement +{ + public class PdfFilePrinter + { + private const string PdfPrinterDriveName = "Microsoft Print To PDF"; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + private class DOCINFOA + { + [MarshalAs(UnmanagedType.LPStr)] + public string pDocName; + [MarshalAs(UnmanagedType.LPStr)] + public string pOutputFile; + [MarshalAs(UnmanagedType.LPStr)] + public string pDataType; + } + + [DllImport("winspool.drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd); + + [DllImport("winspool.drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern bool ClosePrinter(IntPtr hPrinter); + + [DllImport("winspool.drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern int StartDocPrinter(IntPtr hPrinter, int level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di); + + [DllImport("winspool.drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern bool EndDocPrinter(IntPtr hPrinter); + + [DllImport("winspool.drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern bool StartPagePrinter(IntPtr hPrinter); + + [DllImport("winspool.drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern bool EndPagePrinter(IntPtr hPrinter); + + [DllImport("winspool.drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + private static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, int dwCount, out int dwWritten); + + public static void PrintXpsToPdf(byte[] bytes, string outputFilePath, string documentTitle) + { + // Get Microsoft Print to PDF print queue + var pdfPrintQueue = GetMicrosoftPdfPrintQueue(); + + // Copy byte array to unmanaged pointer + var ptrUnmanagedBytes = Marshal.AllocCoTaskMem(bytes.Length); + Marshal.Copy(bytes, 0, ptrUnmanagedBytes, bytes.Length); + + // Prepare document info + var di = new DOCINFOA + { + pDocName = documentTitle, + pOutputFile = outputFilePath, + pDataType = "RAW" + }; + + // Print to PDF + var errorCode = SendBytesToPrinter(pdfPrintQueue.Name, ptrUnmanagedBytes, bytes.Length, di, out var jobId); + + // Free unmanaged memory + Marshal.FreeCoTaskMem(ptrUnmanagedBytes); + + // Check if job in error state (for example not enough disk space) + var jobFailed = false; + try + { + var pdfPrintJob = pdfPrintQueue.GetJob(jobId); + if (pdfPrintJob.IsInError) + { + jobFailed = true; + pdfPrintJob.Cancel(); + } + } + catch + { + // If job succeeds, GetJob will throw an exception. Ignore it. + } + finally + { + pdfPrintQueue.Dispose(); + } + + if (errorCode > 0 || jobFailed) + { + try + { + if (File.Exists(outputFilePath)) + { + File.Delete(outputFilePath); + } + } + catch + { + // ignored + } + } + + if (errorCode > 0) + { + throw new Exception($"Printing to PDF failed. Error code: {errorCode}."); + } + + if (jobFailed) + { + throw new Exception("PDF Print job failed."); + } + } + + private static int SendBytesToPrinter(string szPrinterName, IntPtr pBytes, int dwCount, DOCINFOA documentInfo, out int jobId) + { + jobId = 0; + var dwWritten = 0; + var success = false; + + if (OpenPrinter(szPrinterName.Normalize(), out var hPrinter, IntPtr.Zero)) + { + jobId = StartDocPrinter(hPrinter, 1, documentInfo); + if (jobId > 0) + { + if (StartPagePrinter(hPrinter)) + { + success = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); + EndPagePrinter(hPrinter); + } + + EndDocPrinter(hPrinter); + } + + ClosePrinter(hPrinter); + } + + // TODO: The other methods such as OpenPrinter also have return values. Check those? + + if (success == false) + { + return Marshal.GetLastWin32Error(); + } + + return 0; + } + + private static PrintQueue GetMicrosoftPdfPrintQueue() + { + PrintQueue pdfPrintQueue = null; + + try + { + using (var printServer = new PrintServer()) + { + var flags = new[] { EnumeratedPrintQueueTypes.Local }; + // FirstOrDefault because it's possible for there to be multiple PDF printers with the same driver name (though unusual) + // To get a specific printer, search by FullName property instead (note that in Windows, queue name can be changed) + pdfPrintQueue = printServer.GetPrintQueues(flags).FirstOrDefault(lq => lq.QueueDriver.Name == PdfPrinterDriveName); + } + + if (pdfPrintQueue == null) + { + throw new Exception($"Could not find printer with driver name: {PdfPrinterDriveName}"); + } + + if (!pdfPrintQueue.IsXpsDevice) + { + throw new Exception($"PrintQueue '{pdfPrintQueue.Name}' does not understand XPS page description language."); + } + + return pdfPrintQueue; + } + catch + { + pdfPrintQueue?.Dispose(); + throw; + } + } + } +} diff --git a/DrawGraphManagement/PdfiumViewer.dll b/DrawGraphManagement/PdfiumViewer.dll new file mode 100644 index 0000000..9fa37fd Binary files /dev/null and b/DrawGraphManagement/PdfiumViewer.dll differ diff --git a/DrawGraphManagement/Program.cs b/DrawGraphManagement/Program.cs index 3cf8281..bcd948d 100644 --- a/DrawGraphManagement/Program.cs +++ b/DrawGraphManagement/Program.cs @@ -15,7 +15,7 @@ namespace DrawGraphManagement Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); PreLoad(); - Application.Run(new Main()); + Application.Run(new MainUp()); } static void PreLoad() { diff --git a/DrawGraphManagement/packages.config b/DrawGraphManagement/packages.config new file mode 100644 index 0000000..2a819a7 --- /dev/null +++ b/DrawGraphManagement/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file