using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Xsl;
using System.Reflection;
using SuperMap.RealEstate.Configuration;
using SuperMap.RealEstate.CoreFrameWork;
using SuperMap.RealEstate.Web.UI.WebControls;
using SuperMap.RealEstate.Utility;
using SuperMap.RealEstate.WorkFlow;
using Instance = SuperMap.RealEstate.WorkFlow.Instance;
namespace SuperMap.RealEstate.HighWay.Compents.Document
{
public partial class DocumentBill : SuperMap.RealEstate.Web.UI.UserControl
{
Running.Business.HIGHWAYPROINST _ProInst = null;
#region ViewState
string XslPath = @"/PrintReport/HighWay/ApproveBillManagement/DocumentBill.xslt";
private string ReportXmlPath
{
get
{
return ViewState["ApproveBillManagementXmlPath"] == null ? "" : (string)ViewState["ApproveBillManagementXmlPath"];
}
set
{
ViewState["ApproveBillManagementXmlPath"] = value;
}
}
private string ReportXslPath
{
get
{
return ViewState["ApproveBillManagementXslPath"] == null ? XslPath : (string)ViewState["ApproveBillManagementXslPath"];
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
return;
if (_ProInst != null && _ProInst.PropertyObject != null && (_ProInst.ProInst.NowActInst.ActInst_Name.Contains("承办部门排版") ||
_ProInst.ProInst.NowActInst.ActInst_Name.Contains("用印") || _ProInst.ProInst.NowActInst.ActInst_Name.Contains("存档")))
{
CallBackButton_Print.Visible = true;
}
}
#region 初始加载
public override bool LoadData()
{
string _FileName = "ApproveBillManagement_" + (string.IsNullOrEmpty(_ProInst.Accept_Code) ?
Guid.NewGuid().ToString() : _ProInst.Accept_Code) + ".xml";
CreateDocumentInit(_FileName);
return true;
}
#endregion
#region CreateDocumentInit 创建文档
private void CreateDocumentInit(String File_Name)
{
ReportXmlPath = File_Name;
if (!Directory.Exists(EnvironmentHelper.Temp + "HighWay\\"))
Directory.CreateDirectory(EnvironmentHelper.Temp + "HighWay\\");
if (File.Exists(EnvironmentHelper.Temp + "HighWay\\" + File_Name))
File.Delete(EnvironmentHelper.Temp + "HighWay\\" + File_Name);
using (FileStream _FileStream = new FileStream(EnvironmentHelper.Temp + "HighWay\\" + File_Name, FileMode.OpenOrCreate))
{
using (StreamWriter _StreamWriter = new StreamWriter(_FileStream))
{
_StreamWriter.Write(CreateXmlBill());
_StreamWriter.Close();
InitXml();
}
}
}
#endregion
#region 组件加载扩展 LoadDataEx
///
/// 组件加载扩展
///
/// 脚本
///
public override bool LoadDataEx(ClientSetEventArgs ClientSet)
{
string _FileName = "ApproveBillManagement_" + (string.IsNullOrEmpty(_ProInst.Accept_Code) ? Guid.NewGuid().ToString() : _ProInst.Accept_Code) + ".xml";
//报表解析
CreateDocumentInit(_FileName);
string _Document = Running.Business.HIGHWAYPROINST.Transform(_FileName, ReportXslPath);
//执行前端重置
ClientSet.ExcuteClientScript("$('#" + ApproveBillManagement_Report.ClientID + "').html('" + _Document + "');");
return true;
}
#endregion
#region 创建文档
private string CreateXmlBill()
{
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 _CChildXmlElement = null;
_XmlElement = _XmlDocument.CreateElement("SuperMapDoucuments");
_XmlDocument.AppendChild(_XmlElement);
#endregion
_CChildXmlElement = _XmlDocument.CreateElement("ACCEPT_TYPE");
_XmlElement.AppendChild(_CChildXmlElement);
_CChildXmlElement.InnerText = _ProInst.ProInst.Operation_Type_BaseValue.ToString();
#region 枚举
Dictionary _Dictionary = new Dictionary();
if (_ProInst != null && _ProInst.PropertyObject != null & _ProInst.ProInst.ProDef_Name.Contains("【油】"))
{
_Dictionary.Add("COMPACT_TYPE", "COMPACT_TYPE_SY");
}
else if (_ProInst != null && _ProInst.PropertyObject != null & _ProInst.ProInst.Operation_Type_BaseValue == 310010)
{
_Dictionary.Add("COMPACT_TYPE", "COMPACT_TYPE_ZX");
_Dictionary.Add("SERVERPARTREGION", "SHOPREGION");
}
else
{
_Dictionary.Add("COMPACT_TYPE", "COMPACT_CHARACTER");
}
_Dictionary.Add("ISFORMAT", "ISYES");
_Dictionary.Add("SECONDPART_OBLIGOR", "COMPACTREGPROINST");
#endregion
if (_ProInst.ProInst.Operation_Type_BaseValue == 600002 ||
_ProInst.ProInst.Operation_Type_BaseValue == 600005 ||
_ProInst.ProInst.Operation_Type_BaseValue == 600006)
{
//DataTable _dt = getDataTableByType(_FINANCEPROINST.ProInst.Operation_Type_BaseValue.Value,
// _FINANCEPROINST.FINANCEPROINST_ID.Value, Transaction);
DataTable _dt = new Running.Business.RECEIPTDOCUMENT(Transaction).FillDataTable(" WHERE PROINST_ID = " + _ProInst.Proinst_ID);
#region 获取业务详情节点
if (_dt.Rows.Count > 0)
{
foreach (DataColumn _DataColumn in _dt.Columns)
{
_CChildXmlElement = _XmlDocument.CreateElement(_DataColumn.ColumnName);
_XmlElement.AppendChild(_CChildXmlElement);
try
{
switch (_DataColumn.ColumnName)
{
case "FUNDAPPLYTYPE":
_CChildXmlElement.InnerText = DictionaryHelper.GetFieldEnumName("FUNDAPPLYTYPE", _dt.Rows[0][_DataColumn.ColumnName].ToString(), Transaction);
break;
default:
_CChildXmlElement.InnerText = _dt.Rows[0][_DataColumn.ColumnName].ToString();
break;
}
}
catch
{
_CChildXmlElement.InnerText = _dt.Rows[0][_DataColumn.ColumnName].ToString();
}
}
}
#endregion
}
else if (
_ProInst.ProInst.Operation_Type_BaseValue == 600001||
_ProInst.ProInst.Operation_Type_BaseValue == 600003||
_ProInst.ProInst.Operation_Type_BaseValue == 600004 ||
_ProInst.ProInst.Operation_Type_BaseValue == 600007)
{
DataTable _dt = new Running.Business.INITIATION_DOCUMENT(Transaction).FillDataTable(" WHERE PROINST_ID = " + _ProInst.HIGHWAYPROINST_ID);
#region 获取业务详情节点
if (_dt.Rows.Count > 0)
{
foreach (DataColumn _DataColumn in _dt.Columns)
{
_CChildXmlElement = _XmlDocument.CreateElement(_DataColumn.ColumnName);
_XmlElement.AppendChild(_CChildXmlElement);
try
{
switch (_DataColumn.ColumnName)
{
case "FUNDAPPLYTYPE":
_CChildXmlElement.InnerText = DictionaryHelper.GetFieldEnumName("FUNDAPPLYTYPE", _dt.Rows[0][_DataColumn.ColumnName].ToString(), Transaction);
break;
default:
_CChildXmlElement.InnerText = _dt.Rows[0][_DataColumn.ColumnName].ToString();
break;
}
}
catch
{
_CChildXmlElement.InnerText = _dt.Rows[0][_DataColumn.ColumnName].ToString();
}
}
}
#endregion
_dt = new Running.Business.ATTACHMENT(Transaction).ExecuteDataTable(
@"SELECT WM_CONCAT(ATTACHMENT_DESC) FROM HIGHWAY_RUNNING.T_ATTACHMENT where PROINST_ID = " + _ProInst.HIGHWAYPROINST_ID);
#region 获取附件节点
if (_dt.Rows.Count > 0)
{
_CChildXmlElement = _XmlDocument.CreateElement("ATTACHMENT_DESC");
_XmlElement.AppendChild(_CChildXmlElement);
_CChildXmlElement.InnerText = _dt.Rows[0][0].ToString();
}
#endregion
//_dt = new Running.Business.APPROVED(Transaction).ExecuteDataTable(
// @"SELECT APPROVED_TYPE,APPROVED_INFO FROM HIGHWAY_RUNNING.T_APPROVED where HIGHWAYPROINST_ID = " + _ProInst.HIGHWAYPROINST_ID);
//#region 获取审批意见节点
//if (_dt.Rows.Count > 0)
//{
// foreach (DataRow _DataRow in _dt.Rows)
// {
// _CChildXmlElement = _XmlDocument.CreateElement(_DataRow["APPROVED_TYPE"].ToString());
// _XmlElement.AppendChild(_CChildXmlElement);
// _CChildXmlElement.InnerText = _DataRow["APPROVED_INFO"].ToString();
// }
//}
//#endregion
}
//switch (_ProInst.ProInst.Operation_Type)
//{
// case Enums.Operation_Type.CompactInsert:
//_XmlElement = _XmlDocument.CreateElement("SuperMap");
//_XmlDocument.DocumentElement.AppendChild(_XmlElement);
GetProInst(_XmlDocument, _XmlElement, _Dictionary, true);
GetApproved(_XmlDocument, _XmlElement, _Dictionary, true);
// break;
// default:
// _XmlElement = _XmlDocument.CreateElement("SuperMap");
// _XmlDocument.DocumentElement.AppendChild(_XmlElement);
// GetProInst(_XmlDocument, _XmlElement, _Dictionary, true);
// GetApproved(_XmlDocument, _XmlElement, _Dictionary, true);
// break;
//}
XmlElement _ChildXmlElement = _XmlDocument.CreateElement("TopName");
_XmlElement.AppendChild(_ChildXmlElement);
#region 根据业务类型执行文档解析
//根据业务类型执行文档解析
switch (_ProInst.ProInst.Operation_Type.Value)
{
//合同插件
case Enums.Operation_Type.CompactInsert:
_ChildXmlElement.InnerText = "合同审核表";
InitCompactInsert(_XmlDocument, _XmlElement, _Dictionary);
break;
case Enums.Operation_Type.TradeInsert:
_ChildXmlElement.InnerText = "展销项目审核表";
InitCompactInsert(_XmlDocument, _XmlElement, _Dictionary);
break;
}
#endregion
return _XmlDocument.InnerXml;
}
#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);
_ProInst.CreateXmlNode(_ProInst.ProInst, _XmlDocument, _ChildXmlElement, _Dictionary);
}
#endregion
#region 审批意见
private void GetApproved(XmlDocument _XmlDocument, XmlElement _XmlElement,
Dictionary _Dictionary, bool isChildNodes = false)
{
short _Approved_Type = 0;
DataTable ActInstTB = new WorkFlow.Instance.Business.ActInst(_ProInst).FillDataTable("WHERE Proinst_ID = " + _ProInst.Proinst_ID);
//审批意见
foreach (Running.Business.APPROVED _Approved in _ProInst.ApprovedCollection)
{
if (_Approved_Type == _Approved.Approved_Type.Value)
{
continue;
}
_Approved_Type = _Approved.Approved_Type.Value;
XmlElement _ChildXmlElement = _XmlDocument.CreateElement("ApprovedInfo");
if (isChildNodes)
{
_XmlElement.AppendChild(_ChildXmlElement);
}
else
{
_XmlDocument.DocumentElement.AppendChild(_ChildXmlElement);
}
#region 审核环节
if (_Approved.GetCount("WHERE HIGHWAYPROINST_ID = " + _ProInst.HIGHWAYPROINST_ID + " AND APPROVED_TYPE = " + _Approved.Approved_Type) > 0)
{
XmlElement _XmlElementChildCollection = null;
XmlElement _XmlElementChild = null;
_XmlElementChildCollection = _XmlDocument.CreateElement("Approved_Name");
_ChildXmlElement.AppendChild(_XmlElementChildCollection);
_XmlElementChildCollection.InnerText = _Approved.Approved_Name.Split('【')[0];
foreach (Running.Business.APPROVED _APPROVED in new Running.Business.APPROVED(_ProInst).FillCollection(
"WHERE HIGHWAYPROINST_ID = " + _ProInst.HIGHWAYPROINST_ID + " AND APPROVED_TYPE = " +
_Approved.Approved_Type + " ORDER BY APPROVED_DATE"))
{
//_XmlElementChildCollection = _XmlDocument.CreateElement("ApproveCollection");
//_ChildXmlElement.AppendChild(_XmlElementChildCollection);
//审批部门
_XmlElementChild = _XmlDocument.CreateElement("ApprovedName");
_ChildXmlElement.AppendChild(_XmlElementChild);
_XmlElementChild.InnerText = _APPROVED.Approved_Name.Contains("【") ?
_APPROVED.Approved_Name.Split('【')[1].Split('】')[0] : _APPROVED.Approved_Name;
//审核内容
_XmlElementChild = _XmlDocument.CreateElement("Approved_Info");
_ChildXmlElement.AppendChild(_XmlElementChild);
_XmlElementChild.InnerText = _APPROVED.Approved_Info;
//审核人员
_XmlElementChild = _XmlDocument.CreateElement("Approved_Staff");
_ChildXmlElement.AppendChild(_XmlElementChild);
_XmlElementChild.InnerText = _APPROVED.Approved_Staff;
//审核日期
_XmlElementChild = _XmlDocument.CreateElement("Approved_Date");
_ChildXmlElement.AppendChild(_XmlElementChild);
_XmlElementChild.InnerText = _APPROVED.Approved_Date.Value.ToLongDateString();
if (_APPROVED.Approved_Name == "承办部门办结" && _APPROVED.APPROVED_STAFFID != null)
{
DataTable dataTable = new Running.Business.APPROVED(Transaction).ExecuteDataTable(@"
SELECT
WM_CONCAT(DISTINCT B.USERTYPE_NAME) AS USERTYPE_NAME
FROM
PLATFORM_FRAMEWORK.T_USER A,
PLATFORM_FRAMEWORK.T_USERTYPE B
WHERE
A.USERTYPE_ID = B.USERTYPE_ID AND A.USER_ID IN (" + _APPROVED.APPROVED_STAFFID + ")");
if (dataTable.Rows.Count > 0 && !string.IsNullOrEmpty(dataTable.Rows[0][0].ToString()))
{
_XmlElementChild = _XmlDocument.CreateElement("Department_Name");
if (isChildNodes)
{
_XmlElement.AppendChild(_XmlElementChild);
}
else
{
_XmlDocument.DocumentElement.AppendChild(_XmlElementChild);
}
_XmlElementChild.InnerText = dataTable.Rows[0][0].ToString();
}
}
}
}
else
{
XmlElement _XmlElementChild = null;
//流程名称
_XmlElementChild = _XmlDocument.CreateElement("ProDef_Name");
_ChildXmlElement.AppendChild(_XmlElementChild);
_XmlElementChild.InnerText = _ProInst.ProInst.ProDef_Name;
//审批部门
_XmlElementChild = _XmlDocument.CreateElement("ApprovedName");
_ChildXmlElement.AppendChild(_XmlElementChild);
_XmlElementChild.InnerText = _Approved.Approved_Name.Contains("【") ?
_Approved.Approved_Name.Split('【')[1].Split('】')[0] : _Approved.Approved_Name;
_Approved.Approved_Name = _Approved.Approved_Name.Split('【')[0];
_ProInst.CreateXmlNode(_Approved, _XmlDocument, _ChildXmlElement, _Dictionary);
}
#endregion
}
}
#endregion
//--------------------------业务相关----------------//
#region 方法 -> 合同审批信息
private void InitCompactInsert(XmlDocument _XmlDocument, XmlElement _XmlElement, Dictionary _Dictionary)
{
if (_XmlElement == null)
throw new Exception("首节点不能为空");
if (_ProInst.CompactCollection == null)
return;
XmlElement _ChildXmlElement = null;
XmlElement _ChildInfoXmlElement = null;
XmlElement _COMPACT_AMOUNT_NAME = null;
foreach (Running.Business.PROINSTCOMPACT _PROINSTCOMPACT in _ProInst.CompactCollection)
{
_ChildXmlElement = _XmlDocument.CreateElement("ProinstCompact");
_XmlElement.AppendChild(_ChildXmlElement);
//房屋租赁费
_ChildInfoXmlElement = _XmlDocument.CreateElement("SAFETYRISKMORTGAGE_NAME");
_COMPACT_AMOUNT_NAME = _XmlDocument.CreateElement("COMPACT_AMOUNT_NAME");
_ChildXmlElement.AppendChild(_ChildInfoXmlElement);
_ChildXmlElement.AppendChild(_COMPACT_AMOUNT_NAME);
if (_ProInst.HIGHWAYPROINST_CREATEDATE < DateTime.Parse("2018/01/26") || _PROINSTCOMPACT.COMPACT_TYPE != 1 ||
(_PROINSTCOMPACT.COMPACT_TYPE == 1 && _ProInst.HIGHWAYPROINST_CREATEDATE < DateTime.Parse("2018/01/26") &&
!string.IsNullOrEmpty(_ProInst.ProInst.ProDef_Name) && _ProInst.ProInst.ProDef_Name.Contains("【服】")))
{
_ChildInfoXmlElement.InnerText = "安全风险抵押金";
_COMPACT_AMOUNT_NAME.InnerText = "保底营业额";
}
else
{
_ChildInfoXmlElement.InnerText = "房屋租赁费(总计)";
_COMPACT_AMOUNT_NAME.InnerText = "保底营业额(总计)";
}
_ProInst.CreateXmlNode(_PROINSTCOMPACT, _XmlDocument, _ChildXmlElement, _Dictionary);
}
}
#endregion
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Common.PageHelper.CreateHeaderStyle(Page);
_ProInst = Running.Business.HIGHWAYPROINST.CreateInstance(Page);
this.ButtonVisible = false;
InitXml();
}
private void InitXml()
{
if (!string.IsNullOrEmpty(ReportXmlPath))
{
Xml1.TransformSource = ReportXslPath;
Xml1.DocumentSource = @"/Temporary/Temp/HighWay/" + ReportXmlPath;
}
}
protected void CallBackButton_Print_CallBackClick(object sender, ClientSetEventArgs e)
{
e.ClientScript = Page.GetOpenPopDialogClientScript("/HighWay/Common/ReportDefault.aspx?ReportXmlPath=" +
ReportXmlPath + "&ReportXslPath=" + ReportXslPath + "&ProInst_ID=" +
_ProInst.ProInst.ProInst_ID_Encrypt.ToString(), "ReportDefault", 1000, 600, true, false, true);
}
public override bool Save(bool AutoBindData = true)
{
InitXml();
Running.Business.JOINTLYSIGN _JOINTLYSIGN = new Running.Business.JOINTLYSIGN(_ProInst);
_JOINTLYSIGN.AddSearchParameter("HIGHWAYPROINST_ID", _ProInst.HIGHWAYPROINST_ID);
_JOINTLYSIGN.AddSearchParameter("ActDef_ID", _ProInst.ProInst.NowActInst.ActDef_ID);
if (_JOINTLYSIGN.Search())
{
//2017/11/17朱梓毅修改,会审转出时提示未进行会审人员
if (string.IsNullOrEmpty(_JOINTLYSIGN.APPROVED_IDS))
{
throw new Exception("请" + _JOINTLYSIGN.USER_NAMES + "审核后再转出业务!");
}
else if (_JOINTLYSIGN.USER_IDS.Split(',').Length != _JOINTLYSIGN.APPROVED_IDS.Split(',').Length)
{
string _USER_NAMES = "," + _JOINTLYSIGN.USER_NAMES + ",";
foreach (Running.Business.APPROVED _APPROVED in new Running.Business.APPROVED(_ProInst).FillCollection(
"WHERE APPROVED_ID IN (" + _JOINTLYSIGN.APPROVED_IDS + ")"))
{
if (_USER_NAMES.Contains("," + _APPROVED.Approved_Staff + ","))
{
_USER_NAMES = _USER_NAMES.Replace("," + _APPROVED.Approved_Staff + ",", ",");
}
}
_USER_NAMES = _USER_NAMES.Trim(',');
throw new Exception(string.IsNullOrEmpty(_USER_NAMES) ? "请完成所有会审人员的审核后再转出业务!" :
"请" + _USER_NAMES + "审核后再转出业务!");
}
}
else if (new FrameWork.Business.Module(_ProInst).GetCount("WHERE Module_Url LIKE '%ACTDEF_ID=" +
_ProInst.ProInst.NowActInst.ActDef_ID + "'") > 0)
{
if (new FrameWork.Business.Module(_ProInst).GetCount("WHERE Module_Url LIKE '%ACTDEF_ID=" +
_ProInst.ProInst.NowActInst.ActDef_ID + "'") > _ProInst.ExecuteDataTable(
"SELECT DISTINCT APPROVED_NAME FROM HIGHWAY_RUNNING.T_APPROVED WHERE HIGHWAYPROINST_ID = " +
_ProInst.HIGHWAYPROINST_ID + " AND '" + _ProInst.ProInst.NowActInst.ActDef.ActDef_Name +
"' LIKE CASE WHEN APPROVED_NAME LIKE '%【%' THEN SUBSTR(APPROVED_NAME,0,INSTR(APPROVED_NAME,'【') - 1) " +
"ELSE APPROVED_NAME END || '%'").Rows.Count)
{
throw new Exception("请完成所有会审人员的审核后再转出业务!");
}
}
return true;
}
public override bool SaveEx(ClientSetEventArgs ClientSet)
{
return true;
}
public override void BindObjectToControl()
{
}
protected void CallBackButton_Reflash_CallBackClick(object sender, ClientSetEventArgs e)
{
LoadDataEx(e);
}
}
}