using System; using System.Data; using System.Windows.Forms; using System.Collections.Generic; using System.IO; using System.Text; using System.Drawing; using System.Drawing.Printing; using System.Collections; using SuperMap.RealEstate.Data; using SuperMap.RealEstate.Windows.Forms; using SuperMap.RealEstate.Windows.Utility; using SuperMap.RealEstate.Enums; using SuperMap.RealEstate.Utility; using SuperMap.RealEstate.CoreFrameWork; using SuperMap.RealEstate.ServiceModel; using SuperMap.RealEstate.Configuration; using SuperMap.RealEstate.HighWay.Storage.Business; using SuperMap.RealEstate.Web.UI.WebControls; namespace SuperMap.RealEstate.HighWay.PrintCommodity { public partial class frmPrintMain : Windows.Forms.FormBase { /// /// 存储坐标偏移量 /// private int offsetX = 0; private int offsetY = 0; private int ServerPart_ID; private int SelectNum = 0; string frmUserName = string.Empty; //string UserNameID = string.Empty; /// /// 这里数据查询时就缓存房屋数据,来避免每次选择一个房屋后去数据查询数据。 /// private List _TempCommodityInfoCollection = new List(); /// /// 缓存选中的节点数据,待更改 /// private List _TempPrintCommodityCollection = new List(); public frmPrintMain(int _ServerPart_ID = 0) //string ModuleGuid, string UserName = "", : base(ModuleGuid, UserName, Password) { ServerPart_ID = _ServerPart_ID; InitializeComponent(); //frmUserName = UserName; //UserNameID = _UserNameID; } //public frmPrintMain(string ModuleGuid, string[] args, int _ServerPart_ID) //: base(ModuleGuid, args) //{ // ServerPart_ID = _ServerPart_ID; // InitializeComponent(); //} //public frmPrintMain(string _UserName, string _UserNameID) //{ // InitializeComponent(); //} //public frmPrintMain() //{ // InitializeComponent(); // txtProinstCode.Text = ""; // SetOffsetToControl(); //} private void frmPrintMain_Load(object sender, EventArgs e) { BindDropDownList_SERVERPART(); txtSearch.Text = ""; SetOffsetToControl(); InitInvoiceControlValue(); TreeViewBinding(); } #region 方法 -> 加载服务区下拉框 public void BindDropDownList_SERVERPART(int COMMODITY_ID = 0) { ServerPart_Name.Items.Clear(); //获得服务区信息 foreach (SERVERPART _SERVERPART in (new SERVERPART(this.Transaction)).FillCollection("where SERVERPART_NAME IN (" + System.Configuration.ConfigurationManager.AppSettings["SERVERPART_NAME"].ToString() + ") ORDER BY SERVERPART_CODE")) { ServerPart_Name.Items.Add("【" + _SERVERPART.SERVERPART_CODE + "】" + _SERVERPART.SERVERPART_NAME); } } #endregion #region TreeViewBinding private void TreeViewBinding() { COMMODITYTYPE _COMMODITYTYPE = new Storage.Business.COMMODITYTYPE(this.Transaction); treeView1.Nodes.Clear(); BindingTreeView("-1", this.treeView1.Nodes, this.txtSearch.Text.Trim() + "$" + BarCode.Text.Trim(), ServerPart_ID); } #region BindingTreeView public void BindingTreeView(string pid, TreeNodeCollection nodes, string obscureName, int _ServerPart_ID) { if (_ServerPart_ID == 0) { return; } DataTable bindingDataSource = this.GetBindingDataSource(pid, obscureName, _ServerPart_ID); for (int i = bindingDataSource.Rows.Count - 1; i >= 0; i--) { DataRow dataRow = bindingDataSource.Rows[i]; TreeNode treeNode = new TreeNode(); treeNode.Text = dataRow["COMMODITYTYPE_NAME"].ToString(); //treeNode.Value = dataRow["COMMODITYTYPE_ID"].ToString(); //treeNode.ImageToolTip = "COMMODITYTYPE"; //treeNode.ImageUrl = ""; //treeNode.Expanded = new bool?(false); //if ((new Storage.Business.RTCOMMODITYSERVERPART()).GetCount("WHERE SERVERPART_ID = " + ServerPart_ID + // " AND COMMODITYTYPE_ID = " + dataRow["COMMODITYTYPE_ID"].ToString()) > 0 && ShowCheckBoxes) //{ // treeNode.Checked = true; // treeNode.Expanded = true; //} nodes.Add(treeNode); //treeNode.PopulateOnDemand = true; this.BindingTreeView(dataRow["COMMODITYTYPE_ID"].ToString(), treeNode.Nodes, obscureName, _ServerPart_ID); } foreach (COMMODITY _COMMODITY in (new COMMODITY(this.Transaction)).FillCollection("WHERE COMMODITY_TYPE = '" + pid + "' AND SERVERPART_ID = " + ServerPart_ID)) { TreeNode treeNode = new TreeNode(); treeNode.Text = _COMMODITY.COMMODITY_NAME + "(" + _COMMODITY.COMMODITY_BARCODE + ")"; treeNode.Tag = _COMMODITY.COMMODITY_ID; treeNode.Name = "COMMODITY"; nodes.Add(treeNode); if (!string.IsNullOrEmpty(obscureName.Replace("$", ""))) { if (treeNode.GetNodeCount(false) == 0) { if ((obscureName.Split('$')[0].Trim() == "" ? true : treeNode.Text.IndexOf(obscureName.Split('$')[0], StringComparison.CurrentCultureIgnoreCase) < 0) && (obscureName.Split('$')[1].Trim() == "" ? true : treeNode.Text.IndexOf(obscureName.Split('$')[1], StringComparison.CurrentCultureIgnoreCase) < 0)) { nodes.Remove(treeNode); } } else { treeNode.Expand(); } } } } #endregion #region GetBindingDataSource public DataTable GetBindingDataSource(string pid, int ServerPart_ID) { return this.GetBindingDataSource(pid, string.Empty, ServerPart_ID); } public DataTable GetBindingDataSource(string pid, string obscureName, int ServerPart_ID) { string arg = string.IsNullOrEmpty(pid) ? "1=1" : ("COMMODITYTYPE_PID=" + pid); string arg2 = string.Empty; arg2 = string.IsNullOrEmpty(obscureName.Split('$')[0]) ? "" : ("and COMMODITY_NAME like '%" + obscureName.Split('$')[0] + "%'"); arg2 += string.IsNullOrEmpty(obscureName.Split('$')[1]) ? "" : ("and COMMODITY_BARCODE like '%" + obscureName.Split('$')[1] + "%'"); string arg3 = string.Empty; if (ServerPart_ID == 109) { if (pid != "1=1" && pid != "-1") arg3 = "(COMMODITYTYPE_CODE LIKE '11%' OR COMMODITYTYPE_CODE LIKE '12%')"; else arg3 = "1=1"; } else { arg3 = "(COMMODITYTYPE_CODE LIKE '2%' OR COMMODITYTYPE_CODE LIKE '3%' OR COMMODITYTYPE_CODE LIKE '7%' OR COMMODITYTYPE_CODE LIKE '8%')"; } //string format = "SELECT * FROM HIGHWAY_STORAGE.T_COMMODITYTYPE A WHERE {0} AND " + arg3 + @" AND EXISTS ( // select B.COMMODITYTYPE_ID from HIGHWAY_STORAGE.V_COMMODITY B where SERVERPART_ID = " + ServerPart_ID + // " {1} AND A.COMMODITYTYPE_ID = B.COMMODITYTYPE_ID) {2} ORDER BY COMMODITYTYPE_PID,COMMODITYTYPE_CODE DESC"; string fullSQLString = "SELECT * FROM HIGHWAY_STORAGE.T_COMMODITYTYPE A WHERE " + (string.IsNullOrEmpty(pid) ? "1=1" : ("COMMODITYTYPE_PID=" + pid))+ " AND " + arg3 + " ORDER BY COMMODITYTYPE_PID,COMMODITYTYPE_CODE DESC"; //string.Format(format, arg, arg2, "AND COMMODITYTYPE_VALID = 1"); return (new COMMODITY(this.Transaction)).ExecuteDataTable(fullSQLString, null, 0, 0); } #endregion #endregion #region btnSearch_Click 查询 private void btnSearch_Click(object sender, EventArgs e) { InitInvoiceControlValue(); //if (string.IsNullOrEmpty(txtSearch.Text.Trim())) //{ // MessageBox.Show("请先输入查询条件"); // return; //} try { TreeViewBinding(); } catch (Exception ex) { ShowError(ex.Message); } finally { } } #endregion #region btnPrint_Click 打印 private void btnPrint_Click(object sender, EventArgs e) { InitCommodityCollection(); string billOffset = PrintHelper.GetRegistData("BillOffset"); offsetX = Int32.Parse(billOffset.Split(',')[0]); offsetY = Int32.Parse(billOffset.Split(',')[1]); PageSetupDialog pageSetupDialog1 = new PageSetupDialog(); //创建打印文档 PrintDocument printDocument1 = new PrintDocument(); //开始打印的时候 printDocument1.BeginPrint += new PrintEventHandler(printDocument1_BeginPrint); //输送打印数据 printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage); //打印结束的时候 printDocument1.EndPrint += new PrintEventHandler(printDocument1_EndPrint); //将打印文档赋给打印组件 pageSetupDialog1.Document = printDocument1; //纸张及页边距设置 pageSetupDialog1.PageSettings.Margins = new Margins(0, 0, 0, 0); if (DialogResult.OK == pageSetupDialog1.ShowDialog()) { printDocument1.Print(); } printDocument1.Dispose(); //打印完毕后记得清空临时数据,释放内存,不管别的地方有没有清 _TempPrintCommodityCollection.Clear(); } #endregion #region InitCommodityCollection 获取选中商品信息集合 /// /// 获取打印对象,房屋信息集合 /// private void InitCommodityCollection() { _TempPrintCommodityCollection.Clear(); //事务 ServiceModel.Transaction _Transaction = new Transaction(); StringBuilder _StringBuilder = new StringBuilder(); foreach (TreeNode treeNode in treeView1.Nodes) { if (treeNode.Checked && treeNode.Name == "COMMODITY") { _StringBuilder.Append("," + treeNode.Tag.ToString()); } _StringBuilder = GetCommodityId(treeNode.Nodes, _StringBuilder); } if (_StringBuilder.Length > 0) _StringBuilder.Remove(0, 1); if (_StringBuilder.Length == 0) { //MessageBox.Show("没有选择要打印的户室信息,请选择要打印的户室信息!", "系统操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } foreach (COMMODITY _House in new COMMODITY(_Transaction).FillCollection( " where COMMODITY_ID in ( " + _StringBuilder.ToString() + " )")) { _TempPrintCommodityCollection.Add(_House); } } private StringBuilder GetCommodityId(TreeNodeCollection nodes, StringBuilder _StringBuilder) { foreach (TreeNode treeNode in nodes) { if (treeNode.Checked && treeNode.Name == "COMMODITY") { _StringBuilder.Append("," + treeNode.Tag.ToString()); } _StringBuilder = GetCommodityId(treeNode.Nodes, _StringBuilder); } return _StringBuilder; } #endregion #region 打印事件__开始-->打印-->结束 /// /// 开始打印的时候 /// /// /// public void printDocument1_BeginPrint(object sender, PrintEventArgs e) { ///--------------这里也不要随便改,这里只管把预先准备好的数据丢进去-----------------/// //获取选中房屋集合 InitCommodityCollection(); } /// /// 打印事件 /// /// /// public void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { int ShowCount = _TempPrintCommodityCollection.Count; //初始化打印控件 InitInvoiceControlValue(); //先把数据送给界面上的控件,来精确定位数据动态,这里在每循环完一次后,要跳出一次循环,并且移除当前循环到的,对象数据,让 下面的e.HasMorePages = true;来触发下次循环 if (_TempPrintCommodityCollection.Count > 0) { if (ShowCount > 12) ShowCount = 12; for (int CurrentNum = 0; CurrentNum < ShowCount; CurrentNum++) { //财政票据 InitInvoiceControlValue(_TempPrintCommodityCollection[0], CurrentNum); //移除本次,循环数据 _TempPrintCommodityCollection.RemoveAt(0); } } else { return; } //得到打印界面所有控件数据 Control.ControlCollection ControlColl = null; ControlColl = panel3.Controls; //当第二次加载的数据的时候,要把第一调用的画布,清除一遍,记得这是很重要的一句话! e.Graphics.Clear(Color.White); /// Brush brush = null; //这里的循环结束一次,才表示一张票据的数据输送完毕 for (int i = 0; i < ControlColl.Count; i++) { brush = new SolidBrush(Color.Black); e.Graphics.DrawString(ControlColl[i].Text, ControlColl[i].Font, brush, new PointF(ControlColl[i].Location.X + offsetX, ControlColl[i].Location.Y + offsetY)); } //e.Graphics.DrawImage(Barcode.Image, new PointF(Barcode.Location.X + offsetX, Barcode.Location.Y + offsetY)); //分页,分页数=选中节点数 HasMorePages 用来设置自动触发打印事件 if (_TempPrintCommodityCollection.Count == 0) { e.HasMorePages = false; } else { e.HasMorePages = true; } } /// /// 打印结束的时候 /// /// /// public void printDocument1_EndPrint(object sender, PrintEventArgs e) { _TempPrintCommodityCollection.Clear(); } #endregion #region InitInvoiceControlValue 商品标价签==》初始化 || 赋值 /// /// 票据内容---》初始化 /// private void InitInvoiceControlValue() { //第一组 COMMODITY_NAME0.Text = ""; COMMODITY_ORI0.Text = ""; COMMODITY_UNIT0.Text = ""; COMMODITY_RULE0.Text = ""; COMMODITY_RETAILPRICE0.Text = ""; COMMODITY_GRADE0.Text = ""; //第二组 COMMODITY_NAME1.Text = ""; COMMODITY_ORI1.Text = ""; COMMODITY_UNIT1.Text = ""; COMMODITY_RULE1.Text = ""; COMMODITY_RETAILPRICE1.Text = ""; COMMODITY_GRADE1.Text = ""; //第三组 COMMODITY_NAME2.Text = ""; COMMODITY_ORI2.Text = ""; COMMODITY_UNIT2.Text = ""; COMMODITY_RULE2.Text = ""; COMMODITY_RETAILPRICE2.Text = ""; COMMODITY_GRADE2.Text = ""; //第四组 COMMODITY_NAME3.Text = ""; COMMODITY_ORI3.Text = ""; COMMODITY_UNIT3.Text = ""; COMMODITY_RULE3.Text = ""; COMMODITY_RETAILPRICE3.Text = ""; COMMODITY_GRADE3.Text = ""; //第五组 COMMODITY_NAME4.Text = ""; COMMODITY_ORI4.Text = ""; COMMODITY_UNIT4.Text = ""; COMMODITY_RULE4.Text = ""; COMMODITY_RETAILPRICE4.Text = ""; COMMODITY_GRADE4.Text = ""; //第六组 COMMODITY_NAME5.Text = ""; COMMODITY_ORI5.Text = ""; COMMODITY_UNIT5.Text = ""; COMMODITY_RULE5.Text = ""; COMMODITY_RETAILPRICE5.Text = ""; COMMODITY_GRADE5.Text = ""; //第七组 COMMODITY_NAME6.Text = ""; COMMODITY_ORI6.Text = ""; COMMODITY_UNIT6.Text = ""; COMMODITY_RULE6.Text = ""; COMMODITY_RETAILPRICE6.Text = ""; COMMODITY_GRADE6.Text = ""; //第八组 COMMODITY_NAME7.Text = ""; COMMODITY_ORI7.Text = ""; COMMODITY_UNIT7.Text = ""; COMMODITY_RULE7.Text = ""; COMMODITY_RETAILPRICE7.Text = ""; COMMODITY_GRADE7.Text = ""; //第九组 COMMODITY_NAME8.Text = ""; COMMODITY_ORI8.Text = ""; COMMODITY_UNIT8.Text = ""; COMMODITY_RULE8.Text = ""; COMMODITY_RETAILPRICE8.Text = ""; COMMODITY_GRADE8.Text = ""; //第十组 COMMODITY_NAME9.Text = ""; COMMODITY_ORI9.Text = ""; COMMODITY_UNIT9.Text = ""; COMMODITY_RULE9.Text = ""; COMMODITY_RETAILPRICE9.Text = ""; COMMODITY_GRADE9.Text = ""; //第十一组 COMMODITY_NAME10.Text = ""; COMMODITY_ORI10.Text = ""; COMMODITY_UNIT10.Text = ""; COMMODITY_RULE10.Text = ""; COMMODITY_RETAILPRICE10.Text = ""; COMMODITY_GRADE10.Text = ""; //第十二组 COMMODITY_NAME11.Text = ""; COMMODITY_ORI11.Text = ""; COMMODITY_UNIT11.Text = ""; COMMODITY_RULE11.Text = ""; COMMODITY_RETAILPRICE11.Text = ""; COMMODITY_GRADE11.Text = ""; } /// /// 票据---》赋值 /// /// private void InitInvoiceControlValue(COMMODITY _COMMODITY, int CurrentNum) { ServiceModel.Transaction _Transaction = new Transaction(); (panel3.Controls.Find("COMMODITY_NAME" + CurrentNum.ToString(), true)[0] as TextBox).Text = _COMMODITY.COMMODITY_NAME; (panel3.Controls.Find("COMMODITY_ORI" + CurrentNum.ToString(), true)[0] as TextBox).Text = _COMMODITY.COMMODITY_ORI; (panel3.Controls.Find("COMMODITY_UNIT" + CurrentNum.ToString(), true)[0] as TextBox).Text = _COMMODITY.COMMODITY_UNIT; (panel3.Controls.Find("COMMODITY_RULE" + CurrentNum.ToString(), true)[0] as TextBox).Text = _COMMODITY.COMMODITY_RULE; (panel3.Controls.Find("COMMODITY_RETAILPRICE" + CurrentNum.ToString(), true)[0] as TextBox).Text = _COMMODITY.COMMODITY_RETAILPRICE.ToString() + "元"; try { (panel3.Controls.Find("COMMODITY_GRADE" + CurrentNum.ToString(), true)[0] as TextBox).Text = DictionaryHelper.GetFieldEnumName("COMMODITYGRADE", _COMMODITY.COMMODITY_GRADE.ToString(), new Transaction()); } catch { (panel3.Controls.Find("COMMODITY_GRADE" + CurrentNum.ToString(), true)[0] as TextBox).Text = ""; } #region 获取条形码 //string fix_value = ""; //byte[] fix_image01 = new byte[1024]; //fix_value = Commodity_Barcode.Text; //BarCode _code13 = new BarCode(); //_code13.Height = 18; //_code13.Magnify = 0; //_code13.FontSize = 20; //System.Drawing.Image[] _image = new System.Drawing.Image[1]; //System.IO.MemoryStream _stream = new System.IO.MemoryStream(); //FileStream[] fs = new FileStream[1]; //string jpg = ""; //jpg = "d:\\" + fix_value.ToString() + ".jpeg"; //if (fix_value.Length == 13) //{ // _image[0] = _code13.GetCodeImage(fix_value); // _image[0].Save(_stream, System.Drawing.Imaging.ImageFormat.Jpeg); // //_image[0].Save(jpg); // Barcode.Image = _image[0]; //} //else // Barcode.Image = null; #endregion } #endregion #region XY 位置偏移 private void SetOffsetToControl() { string offset = string.Empty; offset = PrintHelper.GetRegistData("BillOffset"); txtX.Text = offset.Split(',')[0]; txtY.Text = offset.Split(',')[1]; } private void btnSet_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(txtX.Text) && !string.IsNullOrEmpty(txtY.Text)) { string billoffset = string.Format("{0},{1}", txtX.Text.Trim(), txtY.Text.Trim()); PrintHelper.WriteRegedit("BillOffset", billoffset); if (MessageBox.Show("保存成功!", "操作结果", MessageBoxButtons.OK) == DialogResult.OK) { } } } #endregion #region treeView1_AfterCheck 选择复选框 private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { ServiceModel.Transaction _Transaction = new Transaction(); //e.Node.ExpandAll(); treeView_Checked(e.Node.Nodes, e.Node.Checked); COMMODITY _COMMODITY = new COMMODITY(_Transaction); if (e.Node.Name == "COMMODITY") { if (_COMMODITY.Select(int.Parse(e.Node.Tag.ToString()))) { InitInvoiceControlValue(_COMMODITY, SelectNum % 12); SelectNum++; } else InitInvoiceControlValue(); } } private void treeView_Checked(TreeNodeCollection nodes, bool Checked) { foreach (TreeNode treeNode in nodes) { treeNode.Checked = Checked; } } #endregion #region treeView1_AfterSelect 选择树节点 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { ServiceModel.Transaction _Transaction = new Transaction(); COMMODITY _COMMODITY = new COMMODITY(_Transaction); if (e.Node.Name == "COMMODITY") { if (_COMMODITY.Select(int.Parse(e.Node.Tag.ToString()))) { InitInvoiceControlValue(_COMMODITY, 0); } else InitInvoiceControlValue(); } else { treeView_Show(e.Node, _Transaction); } } #endregion #region 呈现商品标价签 bool treeView_Show(TreeNode _TreeNode, ServiceModel.Transaction _Transaction) { int CurrentNum = 0; COMMODITY _COMMODITY = new COMMODITY(_Transaction); foreach (TreeNode treeNode in _TreeNode.Nodes) { if (treeNode.Name == "COMMODITY") { if (_COMMODITY.Select(int.Parse(treeNode.Tag.ToString()))) { InitInvoiceControlValue(_COMMODITY, CurrentNum); CurrentNum++; } else if (CurrentNum % 12 == 0) InitInvoiceControlValue(); return true; } if (treeView_Show(treeNode, _Transaction)) return true; } return false; } #endregion #region ServerPart_Name_SelectedIndexChanged private void ServerPart_Name_SelectedIndexChanged(object sender, EventArgs e) { ServiceModel.Transaction _Transaction = new Transaction(); SERVERPART _SERVERPART = new SERVERPART(_Transaction); _SERVERPART.AddSearchParameter("SERVERPART_CODE", ServerPart_Name.Text.Substring(1, 6)); if (_SERVERPART.Search()) ServerPart_ID = (int)_SERVERPART.SERVERPART_ID; else ServerPart_ID = 0; txtSearch.Text = ""; SetOffsetToControl(); InitInvoiceControlValue(); TreeViewBinding(); } #endregion } }