using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Xml; using System.Web; using System.Web.UI.WebControls; using SuperMap.RealEstate.ServiceModel; using SuperMap.RealEstate.Utility; using SuperMap.RealEstate.Web.UI; using SuperMap.RealEstate.Web.UI.WebControls; using SuperMap.RealEstate.CoreFrameWork; using SuperMap.RealEstate.Contract.Running.Business; using Business = SuperMap.RealEstate.Contract.Storage.Business; using HCC = HZQR.Common.Common; using HZQR.Common; namespace SuperMap.RealEstate.Contract.Compents.ContractExit { public partial class PrintContractBill : UserControl { CONTRACTPROINST _CONTRACTPROINST = null; #region ViewState string XslPath = @"/PrintReport/Contract/ContractBill/ContractBill.xslt"; private string ReportXmlPath { get { return ViewState["ContractBillXmlPath"] == null ? "" : (string)ViewState["ContractBillXmlPath"]; } set { ViewState["ContractBillXmlPath"] = value; } } private string ReportXslPath { get { return ViewState["ContractBillXslPath"] == null ? XslPath : (string)ViewState["ContractBillXslPath"]; } } #endregion protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) return; if (new ATTACHMENT(Transaction).GetCount("WHERE TABLE_NAME = 'T_CONTRACTPROINST' AND TABLE_ID =" + _CONTRACTPROINST.CONTRACTPROINST_ID) > 0) { fidATACH.Visible = true; } else { fidATACH.Visible = false; } ShowImgList(); } #region 初始加载 public override bool LoadData() { string _FileName = "ContractBill_" + Guid.NewGuid().ToString() + ".xml"; if (_CONTRACTPROINST != null) { _FileName = "ContractBill_" + (string.IsNullOrEmpty(_CONTRACTPROINST.ACCEPT_CODE) ? Guid.NewGuid().ToString() : _CONTRACTPROINST.ACCEPT_CODE) + ".xml"; } CreateDocumentInit(_FileName); return true; } #endregion #region CreateDocumentInit 创建文档 private void CreateDocumentInit(String File_Name) { ReportXmlPath = File_Name; if (!Directory.Exists(EnvironmentHelper.Temp + "Contract\\")) { Directory.CreateDirectory(EnvironmentHelper.Temp + "Contract\\"); } if (File.Exists(EnvironmentHelper.Temp + "Contract\\" + File_Name)) { File.Delete(EnvironmentHelper.Temp + "Contract\\" + File_Name); } using (FileStream _FileStream = new FileStream(EnvironmentHelper.Temp + "Contract\\" + File_Name, FileMode.OpenOrCreate)) { using (StreamWriter _StreamWriter = new StreamWriter(_FileStream)) { _StreamWriter.Write(CreateXmlBill()); //Page.Alert("CreateXmlBill:\r\n" + CreateXmlBill()); _StreamWriter.Close(); InitXml(); } } } #endregion #region 组件加载扩展 LoadDataEx /// /// 组件加载扩展 /// /// 脚本 /// public override bool LoadDataEx(ClientSetEventArgs ClientSet) { string _FileName = "ContractBill_" + (string.IsNullOrEmpty(_CONTRACTPROINST.ACCEPT_CODE) ? Guid.NewGuid().ToString() : _CONTRACTPROINST.ACCEPT_CODE) + ".xml"; //报表解析 CreateDocumentInit(_FileName); string _Document = CONTRACTPROINST.Transform(_FileName, ReportXslPath); //执行前端重置 ClientSet.ExcuteClientScript("$('#" + ApproveBillManagement_Report.ClientID + "').html('" + _Document + "');"); return true; } #endregion #region 创建文档 private string CreateXmlBill() { string StartDate = string.Empty; string EndDate = string.Empty; XmlDocument _XmlDocument = new XmlDocument(); #region 文档头 XmlDeclaration _XmlDeclaration = _XmlDocument.CreateXmlDeclaration("1.0", "utf-8", "yes"); _XmlDocument.AppendChild(_XmlDeclaration); XmlProcessingInstruction _XmlProcessingInstruction = _XmlDocument.CreateProcessingInstruction( "xml-stylesheet", " type='text/xsl' href='" + XslPath + "'"); _XmlDocument.AppendChild(_XmlProcessingInstruction); XmlElement _XmlElement = null; _XmlElement = _XmlDocument.CreateElement("QRWL"); XmlElement _ChildXmlElement = null; XmlElement _CChildXmlElement = null; XmlElement _ChildChildXmlElement = null; _XmlDocument.AppendChild(_XmlElement); #endregion #region 枚举 Dictionary _Dictionary = new Dictionary(); #endregion GetProInst(_XmlDocument, _XmlElement, _Dictionary, true); _ChildXmlElement = _XmlDocument.CreateElement("ACCEPT_TYPE"); _XmlElement.AppendChild(_ChildXmlElement); _ChildXmlElement.InnerText = _CONTRACTPROINST.ProInst.Operation_Type_BaseValue.ToString(); //业务详细信息 DataTable _DataTable = getDataTableByType(_CONTRACTPROINST.ProInst.Operation_Type_BaseValue.Value, _CONTRACTPROINST.CONTRACTPROINST_ID.Value, Transaction); _ChildXmlElement = _XmlDocument.CreateElement("DEPT_NAME"); _XmlElement.AppendChild(_ChildXmlElement); _ChildXmlElement.InnerText = _CONTRACTPROINST.DEPT_NAME; _ChildXmlElement = _XmlDocument.CreateElement("ContractPROINST_DESC"); _XmlElement.AppendChild(_ChildXmlElement); _ChildXmlElement.InnerText = _CONTRACTPROINST.CONTRACTPROINST_DESC; _ChildXmlElement = _XmlDocument.CreateElement("ACCEPT_CODE"); _XmlElement.AppendChild(_ChildXmlElement); _ChildXmlElement.InnerText = _CONTRACTPROINST.ACCEPT_CODE; //审批信息 DataTable _StorageAPPROVED = new APPROVED(Transaction).ExecuteDataTable(string.Format( @"SELECT APPROVED_TYPE,APPROVED_INFO,APPROVED_STAFFID,APPROVED_STAFF,APPROVEDTYPE, APPROVED_MARK,APPROVED_NAME,APPROVED_DESC,MAX(APPROVED_DATE) AS APPROVED_DATE FROM CONTRACT_STORAGE.V_APPROVED_ALL WHERE TABLE_NAME = 'T_CONTRACTPROINST' AND TABLE_ID = {0} GROUP BY APPROVED_TYPE,APPROVED_INFO,APPROVED_STAFFID,APPROVED_STAFF,APPROVEDTYPE, APPROVED_MARK,APPROVED_NAME,APPROVED_DESC ORDER BY APPROVEDTYPE,APPROVED_DATE", _CONTRACTPROINST.CONTRACTPROINST_ID)); #region 获取审批信息节点 if (_StorageAPPROVED.Rows.Count > 0) { foreach (DataRow _row in _StorageAPPROVED.Rows) { _ChildXmlElement = _XmlDocument.CreateElement("APPROVEINFO"); _XmlElement.AppendChild(_ChildXmlElement); foreach (DataColumn _DataColumn in _StorageAPPROVED.Columns) { _CChildXmlElement = _XmlDocument.CreateElement(_DataColumn.ColumnName); _ChildXmlElement.AppendChild(_CChildXmlElement); if (_DataColumn.ColumnName == "APPROVED_DATE") { _CChildXmlElement.InnerText = HCC.Common.TranslateDateTime(_row[_DataColumn.ColumnName].ToString()); } else { _CChildXmlElement.InnerText = _row[_DataColumn.ColumnName].ToString().Replace("意见", " "); } } } } #endregion #region 获取业务详情节点 if (_DataTable.Rows.Count > 0) { foreach (DataColumn _DataColumn in _DataTable.Columns) { _ChildXmlElement = _XmlDocument.CreateElement(_DataColumn.ColumnName); _XmlElement.AppendChild(_ChildXmlElement); try { switch (_DataColumn.ColumnName) { case "BORROWING_AMOUNT_CAP": case "TOTALAMOUNT_CAP": case "AMOUNT_CAP": string strColumnValue = _DataTable.Rows[0][_DataColumn.ColumnName].ToString(); if (!string.IsNullOrWhiteSpace(strColumnValue) && !strColumnValue.EndsWith("整")) { strColumnValue += "整"; } _ChildXmlElement.InnerText = strColumnValue; break; case "BORROWING_AMOUNT_LOWER": case "TOTALAMOUNT_LOWER": try { _ChildXmlElement.InnerText = _DataTable.Rows[0][_DataColumn.ColumnName].TryParseToDouble().ToString("0.00"); } catch { _ChildXmlElement.InnerText = _DataTable.Rows[0][_DataColumn.ColumnName].ToString(); } break; case "PAY_METHOD": switch (_DataTable.Rows[0][_DataColumn.ColumnName].ToString()) { case "1": _ChildXmlElement.InnerText = "现金"; break; case "2": _ChildXmlElement.InnerText = "转账"; break; } break; case "BORROWER_DATE": case "DEPOSITREFUND_DATE": case "RECEIPT_DATE": _ChildXmlElement.InnerText = _DataTable.Rows[0][_DataColumn.ColumnName ].TryParseToDateTime().Value.ToLongDateString(); break; default: _ChildXmlElement.InnerText = _DataTable.Rows[0][_DataColumn.ColumnName].ToString(); break; } } catch { _ChildXmlElement.InnerText = _DataTable.Rows[0][_DataColumn.ColumnName].ToString(); } } #region 根据类型创建节点 switch (_CONTRACTPROINST.ProInst.Operation_Type_BaseValue.Value) { case 310020: #region 合同退场审批流程 DataTable dtExpense = new CONTRACTEXITEXPENSE(Transaction).FillDataTable( "WHERE CONTRACTPROINST_ID = " + _CONTRACTPROINST.CONTRACTPROINST_ID); foreach (DataRow drExpense in dtExpense.Select("EXPENSE_TYPE = 1000", "CONTRACTEXITEXPENSE_ID")) { //创建新节点 _ChildXmlElement = _XmlDocument.CreateElement("RentCollection"); _XmlElement.AppendChild(_ChildXmlElement); foreach (DataColumn _DataColumn in dtExpense.Columns) { _CChildXmlElement = _XmlDocument.CreateElement(_DataColumn.ColumnName); _ChildXmlElement.AppendChild(_CChildXmlElement); switch (_DataColumn.ColumnName) { case "EXPENSE_STARTDATE": case "EXPENSE_ENDDATE": _CChildXmlElement.InnerText = HCC.Common.TranslateDateTime( drExpense[_DataColumn.ColumnName].ToString()).Split(' ')[0]; break; default: _CChildXmlElement.InnerText = drExpense[_DataColumn.ColumnName].ToString(); break; } } } foreach (DataRow drExpense in dtExpense.Select("EXPENSE_TYPE = 2000", "CONTRACTEXITEXPENSE_ID")) { //创建新节点 _ChildXmlElement = _XmlDocument.CreateElement("PropertyCollection"); _XmlElement.AppendChild(_ChildXmlElement); foreach (DataColumn _DataColumn in dtExpense.Columns) { _CChildXmlElement = _XmlDocument.CreateElement(_DataColumn.ColumnName); _ChildXmlElement.AppendChild(_CChildXmlElement); switch (_DataColumn.ColumnName) { case "EXPENSE_STARTDATE": case "EXPENSE_ENDDATE": _CChildXmlElement.InnerText = HCC.Common.TranslateDateTime( drExpense[_DataColumn.ColumnName].ToString()).Split(' ')[0]; break; default: _CChildXmlElement.InnerText = drExpense[_DataColumn.ColumnName].ToString(); break; } } } #endregion break; default: break; } #endregion } #endregion return _XmlDocument.InnerXml; } #endregion #region 根据类型获取数据 public static DataTable getDataTableByType(int ACCEPT_TYPE, int CONTRACTPROINST_ID, Transaction Transaction) { DataTable _DataTable = new DataTable(); switch (ACCEPT_TYPE) { case 310020: _DataTable = new CONTRACTEXIT(Transaction).FillDataTable( "WHERE CONTRACTPROINST_ID = " + CONTRACTPROINST_ID); break; default: break; } return _DataTable; } #endregion #region 流程信息 private void GetProInst(XmlDocument _XmlDocument, XmlElement _XmlElement, Dictionary _Dictionary, bool isChildNodes = false) { XmlElement _ChildXmlElement = _XmlDocument.CreateElement("ProInst"); if (isChildNodes) { _XmlElement.AppendChild(_ChildXmlElement); } else { _XmlDocument.DocumentElement.AppendChild(_ChildXmlElement); } _CONTRACTPROINST.CreateXmlNode(_CONTRACTPROINST.ProInst, _XmlDocument, _ChildXmlElement, _Dictionary); } #endregion protected override void OnInit(EventArgs e) { base.OnInit(e); Common.PageHelper.CreateHeaderStyle(Page); _CONTRACTPROINST = Running.Business.CONTRACTPROINST.CreateInstance(Page); this.ButtonVisible = false; LoadData(); //InitXml(); } private void InitXml() { //Page.Alert("ReportXmlPath:\r\n" + ReportXmlPath); if (!string.IsNullOrEmpty(ReportXmlPath)) { Xml1.TransformSource = ReportXslPath; Xml1.DocumentSource = "/Temporary/Temp/Contract/" + ReportXmlPath; } } protected void CallBackButton_Print_CallBackClick(object sender, ClientSetEventArgs e) { e.ClientScript = Page.GetOpenPopDialogClientScript("/Contract/Common/ReportDefault.aspx?ReportXmlPath=" + ReportXmlPath + "&ReportXslPath=" + ReportXslPath + "&ContractPROINST_ID=" + _CONTRACTPROINST.CONTRACTPROINST_ID_Encrypt, "PrintDefault", 1200, 800, true, false, true); } protected void Button_Reflash_Click(object sender, EventArgs e) { LoadData(); } public override bool Save(bool AutoBindData = true) { LoadData(); //InitXml(); return true; } public override bool SaveEx(ClientSetEventArgs ClientSet) { return true; } #region 显示附件列表 public void ShowImgList() { if (_CONTRACTPROINST != null) { DataTable datable = new Running.Business.ATTACHMENT(this.Transaction).FillDataTable( "WHERE TABLE_NAME = 'T_CONTRACTPROINST' AND TABLE_ID =" + _CONTRACTPROINST.CONTRACTPROINST_ID); repATACH.DataSource = datable; repATACH.DataBind(); } } protected void LinkButton_Click(object sender, EventArgs e) { LinkButton LinkButton = sender as LinkButton; //下载内容 Running.Business.ATTACHMENT _ATTACHMENT = new Running.Business.ATTACHMENT(this.Transaction); _ATTACHMENT.ATTACHMENT_ID_Encrypt = LinkButton.Attributes["base-code"]; if (_ATTACHMENT.Select()) { string uploadPath = HttpContext.Current.Server.MapPath("~"+ _ATTACHMENT.ATTACHMENT_PATH); string FileName = System.Web.HttpUtility.UrlEncode(_ATTACHMENT.ATTACHMENT_NAME, System.Text.Encoding.UTF8); System.IO.MemoryStream ms = new System.IO.MemoryStream(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.Charset = "utf-8"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");//设置输出流为简体中文 HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format( "attachment; filename=" + FileName, DateTime.Now.ToString("yyyyMMddHHmmssfff"))); HttpContext.Current.Response.BinaryWrite(System.IO.File.ReadAllBytes(uploadPath)); HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 HttpContext.Current.Response.End(); ms.Close(); ms.Dispose(); } } #endregion protected void repATACH_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType == System.Web.UI.WebControls.ListItemType.AlternatingItem || e.Item.ItemType == System.Web.UI.WebControls.ListItemType.SelectedItem) { DataRowView rowv = (DataRowView)e.Item.DataItem; LinkButton LinkButton = e.Item.FindControl("LinkButton") as LinkButton; LinkButton.ToolTip = rowv["ATTACHMENT_NAME"].ToString(); LinkButton.Text = "" + (LinkButton.ToolTip.Length > 30 ? LinkButton.ToolTip.Substring(0, 25) + "..." : LinkButton.ToolTip) + ""; LinkButton.Attributes["base-code"] = rowv["ATTACHMENT_ID"].ToEncrypt(); } } } }