2025-03-27 15:05:14 +08:00

525 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
/// <summary>
/// 组件加载扩展
/// </summary>
/// <param name="ClientSet">脚本</param>
/// <returns></returns>
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<string, string> _Dictionary = new Dictionary<string, string>();
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<string, string> _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<string, string> _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<string, string> _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);
}
}
}