You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

290 lines
11 KiB
C#

11 months ago
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using DSWeb.EntityDA;
using System.Xml;
using System.Text;
using System.Text.RegularExpressions;
namespace DSWeb.FeeCodes
{
public partial class FeeCodeService : System.Web.UI.Page
{
private string strMark;
private string strPos;
private int iPos = 0;
private string strHandle;
private string strFeeName;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strPost = Request.Url.ToString();
if (Request.QueryString["mask"] != null)
{
strMark = Request.QueryString["mask"].ToString();
}
if (Request.QueryString["pos"] != null)
{
strPos = Request.QueryString["pos"].ToString();
iPos = int.Parse(strPos);
}
if (Request.QueryString["handle"] != null)
{
strHandle = Request.QueryString["handle"].ToString();
}
if (Request.QueryString["feename"] != null)
{
UnicodeEncoding unicode = new UnicodeEncoding();
if (Request.QueryString["feename"].ToString().Trim().IndexOf("/") >= 0)
{
strFeeName = Request.QueryString["feename"].ToString().Trim();
}
else
{
strFeeName = UnicodeToGB(unicode.GetString(unicode.GetBytes(Regex.Unescape(Request.QueryString["feename"].ToString()))));
}
}
if (Request.QueryString["isbeing"] != null)
{
string strBeing = Request.QueryString["isbeing"].ToString();
T_ALL_DA T_ALL_DA = new T_ALL_DA();
strBeing = T_ALL_DA.GetBeingCodeFee(strBeing);
Response.Write(strBeing.Trim());
return;
}
if (strHandle != null)
{
if (strHandle == "feecode")
{ //返回code_fee费用名称JSON字符串
Response.Write(GetFeeNameJson());
}
else if (strHandle == "getcurrency")
{ //通过费用名称获取费用代码表code_fee币别汇率信息
Response.Write(GetFeeCodeCurrencyJson(strFeeName));
}
else if (strHandle == "all")
{
XmlDocument docs = GetDoc();
Response.ContentType = "text/xml";
Response.Write(docs.OuterXml.ToString());
}
}
else
{
XmlDocument docs = GetDoc();
Response.ContentType = "text/xml";
Response.Write(docs.OuterXml.ToString());
}
}
}
public string BuildXML()
{
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.Append("<?xml version=\"1.0\" ?>");
resultBuilder.AppendFormat("<complete{0}>", iPos == 0 ? string.Empty : " add=\"true\"");
if (!string.IsNullOrEmpty(strMark))
{
if (strHandle == "all")
{
resultBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", "0", "ALL | 全部");
}
DataTable feeCodeTable = new DataTable();
FeeCodeDA feeCodeDA = new FeeCodeDA();
feeCodeTable = feeCodeDA.GetExcuteSql("SELECT ISNULL(FEECODE,'')+' | '+ISNULL(Name,'') AS FULLNAME,FEECODE,name FROM code_fee order by name desc").Tables[0];
if (feeCodeTable.Rows.Count > 0)
{
for (int i = 0; i < feeCodeTable.Rows.Count; i++)
{
resultBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", feeCodeTable.Rows[i]["name"].ToString(), feeCodeTable.Rows[i]["FULLNAME"].ToString());
}
}
}
resultBuilder.Append("</complete>");
return resultBuilder.ToString().Replace("&", "&amp;");
}
public XmlDocument GetDoc()
{
XmlDocument xmldoc = new XmlDocument();
string content = BuildXML();
try
{
xmldoc.LoadXml(content);
}
catch (Exception)
{
}
return xmldoc;
}
#region 返回code_fee费用名称JSON字符串
/// <summary>
/// 返回code_fee费用名称JSON字符串
/// code_fee费用名称设置
/// </summary>
/// <returns>返回code_fee费用名称JSON字符串</returns>
public string GetFeeNameJson()
{
FeeCodeDA feeCodeDA = new FeeCodeDA();
DataTable sourceTable = new DataTable();
string strSql = "SELECT GID,ISNULL(FEECODE,'')+' '+ISNULL(Name,'') AS FullName,Name FROM code_fee ORDER BY FEECODE ASC";
if (Cache["feecodes"] != null)
{
sourceTable = (DataTable)Cache["feecodes"];
}
else
{
sourceTable = feeCodeDA.GetExcuteSql(strSql).Tables[0];
Cache.Insert("feecodes", sourceTable);
}
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("feecode:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (i == 0)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
}
else
{
sourceBuilder.Append(",{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
}
sourceBuilder.Append("\"code\":\"" + sourceTable.Rows[i][1].ToString() + "\",");
sourceBuilder.Append("\"name\":\"" + sourceTable.Rows[i][2].ToString() + "\"}");
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
#region 通过费用名称获取费用代码表code_fee币别汇率信息
/// <summary>
/// 通过费用名称获取费用代码表code_fee币别汇率信息
/// </summary>
/// <param name="tempFeeCodeName"></param>
/// <returns>返回汇率信息</returns>
private string GetFeeCodeCurrencyJson(string tempFeeCodeName)
{
FeeCodeDA feeCodeDA = new FeeCodeDA();
DataTable sourceTable;
string strSql = String.Format(" SELECT GID,ISNULL(FEECODE,'') as FEECODE,ISNULL(Name,'') AS NAME,DEFAULTCURR,ISSEA,ISAIR,DEFAULTUNIT,DEFAULTDEBIT,DEFAULTCREDIT FROM code_fee WHERE NAME = '{0}'",tempFeeCodeName);
sourceTable = feeCodeDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("feecode:[");
if (sourceTable.Rows.Count > 0)
{
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (i == 0)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
}
else
{
sourceBuilder.Append(",{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
}
sourceBuilder.Append("\"code\":\"" + sourceTable.Rows[i][1].ToString() + "\",");
sourceBuilder.Append("\"name\":\"" + sourceTable.Rows[i][2].ToString() + "\",");
sourceBuilder.Append("\"cur\":\"" + sourceTable.Rows[i][3].ToString() + "\",");
sourceBuilder.Append("\"issea\":" + (sourceTable.Rows[i][4].ToString().ToLower().Equals("true") ? 1 : 0) + ",");
sourceBuilder.Append("\"isair\":\"" + (sourceTable.Rows[i][5].ToString().ToLower().Equals("true") ? 1 : 0) + "\",");
sourceBuilder.Append("\"unit\":\"" + sourceTable.Rows[i][6].ToString() + "\",");
sourceBuilder.Append("\"debit\":\"" + sourceTable.Rows[i][7].ToString() + "\",");
sourceBuilder.Append("\"credit\":\"" + sourceTable.Rows[i][8].ToString() + "\"");
sourceBuilder.Append("}");
}
}
else
{
sourceBuilder.Append("{id:\"\",");
sourceBuilder.Append("\"code\":\"\",");
sourceBuilder.Append("\"name\":\"\",");
sourceBuilder.Append("\"cur\":\"\",");
sourceBuilder.Append("\"issea\":-1,");
sourceBuilder.Append("\"isair\":-1,");
sourceBuilder.Append("\"unit\":0,");
sourceBuilder.Append("\"debit\":0,");
sourceBuilder.Append("\"credit\":0");
sourceBuilder.Append("}");
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
#region Unicode-GB Code转换
/// <summary>
/// Unicode-GB Code转换
/// </summary>
/// <param name="text">将Unicode编码字符转换成GB编码字符</param>
/// <returns>GB Code字符串</returns>
public string UnicodeToGB(string text)
{
UnicodeEncoding unicode = new UnicodeEncoding();
text = unicode.GetString(unicode.GetBytes(Regex.Unescape(text.Trim())));
return text;
}
/// <summary>
/// Unicode-GB Code转换
/// </summary>
/// <param name="text">将Unicode编码字符转换成GB编码字符</param>
/// <returns>GB Code字符串</returns>
public string UnicodeToGB_Old(string text)
{
MatchCollection mc = Regex.Matches(text, "([\\w]+)|(\\\\u([\\w]{4}))");
if (mc != null && mc.Count > 0)
{
StringBuilder sb = new StringBuilder();
foreach (Match m2 in mc)
{
string v = m2.Value;
if (v.IndexOf("\\") >= 0)
{
string word = v.Substring(2);
byte[] codes = new byte[2];
int code = Convert.ToInt32(word.Substring(0, 2), 16);
int code2 = Convert.ToInt32(word.Substring(2), 16);
codes[0] = (byte)code2;
codes[1] = (byte)code;
sb.Append(Encoding.Unicode.GetString(codes));
}
else
{
sb.Append(v);
}
}
return sb.ToString();
}
else
{
return text;
}
}
#endregion
}
}