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