533 lines
20 KiB
C#
533 lines
20 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 存储坐标偏移量
|
|
/// </summary>
|
|
private int offsetX = 0;
|
|
private int offsetY = 0;
|
|
private int ServerPart_ID;
|
|
|
|
string frmUserName = string.Empty;
|
|
//string UserNameID = string.Empty;
|
|
/// <summary>
|
|
/// 这里数据查询时就缓存房屋数据,来避免每次选择一个房屋后去数据查询数据。
|
|
/// </summary>
|
|
private List<COMMODITY> _TempCommodityInfoCollection = new List<COMMODITY>();
|
|
|
|
/// <summary>
|
|
/// 缓存选中的节点数据,待更改
|
|
/// </summary>
|
|
private List<COMMODITY> _TempPrintCommodityCollection = new List<COMMODITY>();
|
|
|
|
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()).FillCollection(
|
|
"where PROVINCE_CODE = '6560' and FIELDENUM_ID <> 6560 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();
|
|
treeView1.Nodes.Clear();
|
|
BindingTreeView("-1", this.treeView1.Nodes, this.txtSearch.Text.Trim(), ServerPart_ID);
|
|
|
|
}
|
|
|
|
#region BindingTreeView
|
|
public void BindingTreeView(string pid, TreeNodeCollection nodes, string obscureName, int _ServerPart_ID)
|
|
{
|
|
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()).FillCollection("WHERE COMMODITY_TYPE = '" + pid +
|
|
"' AND SERVERPART_ID = " + ServerPart_ID))
|
|
{
|
|
TreeNode treeNode = new TreeNode();
|
|
treeNode.Text = _COMMODITY.COMMODITY_NAME;
|
|
treeNode.Tag = _COMMODITY.COMMODITY_ID;
|
|
treeNode.Name = "COMMODITY";
|
|
nodes.Add(treeNode);
|
|
if (!string.IsNullOrEmpty(obscureName))
|
|
{
|
|
if (treeNode.GetNodeCount(false) == 0)
|
|
{
|
|
if (treeNode.Text.IndexOf(obscureName, 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 arg3 = string.Empty;
|
|
string format = @"SELECT * FROM HIGHWAY_STORAGE.T_COMMODITYTYPE WHERE {0} AND COMMODITYTYPE_ID in (
|
|
select COMMODITYTYPE_ID from HIGHWAY_STORAGE.V_COMMODITY where SERVERPART_ID = " + ServerPart_ID +
|
|
" {1}) {2} ORDER BY COMMODITYTYPE_PID,COMMODITYTYPE_CODE DESC";
|
|
string arg = string.IsNullOrEmpty(pid) ? "1=1" : ("COMMODITYTYPE_PID=" + pid);
|
|
string arg2 = string.IsNullOrEmpty(obscureName) ? "" : ("and COMMODITY_NAME like '%" + obscureName + "%'");
|
|
string fullSQLString = string.Format(format, arg, arg2, "AND COMMODITYTYPE_VALID = 1");
|
|
return (new COMMODITY()).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 获取选中商品信息集合
|
|
/// <summary>
|
|
/// 获取打印对象,房屋信息集合
|
|
/// </summary>
|
|
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 打印事件__开始-->打印-->结束
|
|
/// <summary>
|
|
/// 开始打印的时候
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public void printDocument1_BeginPrint(object sender, PrintEventArgs e)
|
|
{
|
|
///--------------这里也不要随便改,这里只管把预先准备好的数据丢进去-----------------///
|
|
//获取选中房屋集合
|
|
InitCommodityCollection();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
|
|
{
|
|
//初始化打印控件
|
|
InitInvoiceControlValue();
|
|
//先把数据送给界面上的控件,来精确定位数据动态,这里在每循环完一次后,要跳出一次循环,并且移除当前循环到的,对象数据,让 下面的e.HasMorePages = true;来触发下次循环
|
|
if (_TempPrintCommodityCollection.Count > 0)
|
|
{
|
|
//财政票据
|
|
InitInvoiceControlValue(_TempPrintCommodityCollection[0]);
|
|
//移除本次,循环数据
|
|
_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;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印结束的时候
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public void printDocument1_EndPrint(object sender, PrintEventArgs e)
|
|
{
|
|
_TempPrintCommodityCollection.Clear();
|
|
}
|
|
#endregion
|
|
|
|
#region InitInvoiceControlValue 商品标价签==》初始化 || 赋值
|
|
/// <summary>
|
|
/// 票据内容---》初始化
|
|
/// </summary>
|
|
private void InitInvoiceControlValue()
|
|
{
|
|
Commodity_Name.Text = "";
|
|
Article_Num.Text = "";
|
|
ProducingArea.Text = "";
|
|
Specification.Text = "";
|
|
Commodity_Barcode.Text = "";
|
|
Grade.Text = "";
|
|
Unit.Text = "";
|
|
Retail_Price.Text = "";
|
|
Staff.Text = "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 票据---》赋值
|
|
/// </summary>
|
|
/// <param name="_COMMODITY"></param>
|
|
private void InitInvoiceControlValue(COMMODITY _COMMODITY)
|
|
{
|
|
ServiceModel.Transaction _Transaction = new Transaction();
|
|
Commodity_Name.Text = _COMMODITY.COMMODITY_NAME;
|
|
Article_Num.Text = _COMMODITY.COMMODITY_CODE;
|
|
ProducingArea.Text = _COMMODITY.COMMODITY_ORI;
|
|
Specification.Text = _COMMODITY.COMMODITY_RULE;
|
|
Commodity_Barcode.Text = _COMMODITY.COMMODITY_BARCODE;
|
|
try
|
|
{
|
|
Grade.Text = DictionaryHelper.GetFieldEnumName("COMMODITYGRADE", _COMMODITY.COMMODITY_GRADE.ToString(), new Transaction());
|
|
if (Grade.Text.Contains("等品"))
|
|
Grade.Text = Grade.Text.Replace("等品", "");
|
|
else if (Grade.Text.Contains("合格品"))
|
|
Grade.Text = "合格";
|
|
}
|
|
catch
|
|
{
|
|
Grade.Text = "";
|
|
}
|
|
Unit.Text = _COMMODITY.COMMODITY_UNIT;
|
|
Retail_Price.Text = _COMMODITY.COMMODITY_RETAILPRICE.ToString();
|
|
Staff.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);
|
|
}
|
|
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);
|
|
}
|
|
else
|
|
InitInvoiceControlValue();
|
|
}
|
|
else
|
|
{
|
|
treeView_Show(e.Node, _Transaction);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 呈现商品标价签
|
|
bool treeView_Show(TreeNode _TreeNode, ServiceModel.Transaction _Transaction)
|
|
{
|
|
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);
|
|
}
|
|
else
|
|
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
|
|
}
|
|
}
|