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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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