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();
}
}
}
}